Docker Image For BookStack
Current Version: 23.5.2
In 0.28.0 we changed the container http port from 80 to 8080 to allow root privileges to be dropped.
In 0.12.2 we removed DB_PORT
. You can now specify the port via DB_HOST
like DB_HOST=mysql:3306
Docker Compose is the quickest way to start using BookStack. Run the following command:
docker-compose up -d
and after that open your Browser and go to http://localhost:8080. You can login with username '[email protected]' and password 'password'.
If you have any issues feel free to create an issue on GitHub.
When using Docker compose, certain environment variables (DB_HOST, DB_DATABASE, DB_USER, and DB_PASSWORD) may be initialized as Docker secrets to prevent their exposure within the docker-compose.yml file or via docker inspect
. First, the values for each secret must be saved as individual files. Then, the docker-compose.yml file must be modified to correctly call these secrets. An example compose file is included at docker-compose.secrets.yml. Note that the environment variables listed above have been replaced with their *_FILE equivalents, and a new top-level "secrets" element has been added to the end of the file.
Both the MySQL and MariaDB Docker implementations also support Docker secrets. See their documentation for details.
Note that if you want to use LDAP, $
has to be escape like \$
, i.e. -e "LDAP_USER_FILTER"="(&(uid=\${user}))"
Networking changed in Docker v1.9, so you need to do one of the following steps.
- MySQL Container:
docker run -d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=bookstack \
-e MYSQL_USER=bookstack \
-e MYSQL_PASSWORD=secret \
--name bookstack_db \
mysql:5.7.21
- BookStack Container:
docker run -d --link bookstack_db_:mysql \
-p 8080:8080 \
--name bookstack_23.5.2 \
solidnerd/bookstack:23.5.2
- Create a shared network:
docker network create bookstack_nw
- Run MySQL container :
docker run -d --net bookstack_nw \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=bookstack \
-e MYSQL_USER=bookstack \
-e MYSQL_PASSWORD=secret \
--name="bookstack_db" \
mysql:5.7.21
- Run BookStack Container
docker run -d --net bookstack_nw \
-e DB_HOST=bookstack_db:3306 \
-e DB_DATABASE=bookstack \
-e DB_USERNAME=bookstack \
-e DB_PASSWORD=secret \
-e APP_URL=http://example.com \
-p 8080:8080 \
--name="bookstack_23.5.2" \
solidnerd/bookstack:23.5.2
The APP_URL parameter should be the base URL for your BookStack instance without a trailing slash. For example: APP_URL=http://example.com
To access your .env
file and important bookstack folders on your host system change <HOST>
in the following line to your host directory and add it then to your run command:
--mount type=bind,source=<HOST>/.env,target=/var/www/bookstack/.env \
-v <HOST>:/var/www/bookstack/public/uploads \
-v <HOST>:/var/www/bookstack/storage/uploads
In case of a windows host machine the .env file has to be already created in the host directory otherwise a folder named .env will be created.
After these steps you can visit http://localhost:8080 . You can login with username '[email protected]' and password 'password'.
This is a fork of Kilhog/docker-bookstack. Kilhog did the intial work, but I want to go in a different direction.