# This is a Docker Compose configuration
-# intended for development purposes
-
-version: '3'
+# intended for development purposes only
volumes:
db: {}
services:
db:
- image: mysql:8
+ image: mysql:8.4
environment:
- MYSQL_DATABASE: bookstack-test
+ MYSQL_DATABASE: bookstack-dev
MYSQL_USER: bookstack-test
MYSQL_PASSWORD: bookstack-test
MYSQL_RANDOM_ROOT_PASSWORD: 'true'
- command: --default-authentication-plugin=mysql_native_password
volumes:
+ - ./dev/docker/init.db:/docker-entrypoint-initdb.d
- db:/var/lib/mysql
app:
build:
context: .
- dockerfile: docker/dev/Dockerfile
+ dockerfile: ./dev/docker/Dockerfile
+ environment:
+ APP_URL: http://localhost:${DEV_PORT:-8080}
+ DB_CONNECTION: mysql
+ DB_HOST: db
+ DB_PORT: 3306
+ DB_DATABASE: bookstack-dev
+ DB_USERNAME: bookstack-test
+ DB_PASSWORD: bookstack-test
+ TEST_DATABASE_URL: mysql://bookstack-test:bookstack-test@db/bookstack-test
+ MAIL_DRIVER: smtp
+ MAIL_HOST: mailhog
+ MAIL_PORT: 1025
ports:
- - ${DEV_PORT}:80
+ - ${DEV_PORT:-8080}:80
volumes:
- ./:/app
- entrypoint: /app/docker/dev/entrypoint.app.sh
+ - ./dev/docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+ entrypoint: /app/dev/docker/entrypoint.app.sh
+ extra_hosts:
+ - "host.docker.internal:host-gateway"
node:
- image: node:alpine
+ image: node:22-alpine
working_dir: /app
+ user: node
volumes:
- ./:/app
- entrypoint: /app/docker/dev/entrypoint.node.sh
+ entrypoint: /app/dev/docker/entrypoint.node.sh
+ mailhog:
+ image: mailhog/mailhog
+ ports:
+ - ${DEV_MAIL_PORT:-8025}:8025