services: backend: image: gradle:8-jdk21-alpine command: sh -c "cd /booklore-api && ./gradlew bootRun" ports: - "${BACKEND_PORT:-8080}:8080" - "${REMOTE_DEBUG_PORT:-5005}:5005" environment: - DATABASE_URL=jdbc:mariadb://backend_db:3306/booklore - DATABASE_USERNAME=booklore - DATABASE_PASSWORD=booklore - REMOTE_DEBUG_ENABLED=true stdin_open: true tty: true restart: unless-stopped depends_on: - backend_db volumes: - './booklore-api:/booklore-api' - ./shared/data:/app/data - ./shared/books:/books backend_db: image: mariadb:11.4 container_name: backend_db volumes: - backend_db:/var/lib/mysql restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=booklore - MYSQL_DATABASE=booklore - MYSQL_USER=booklore - MYSQL_PASSWORD=booklore ports: - "${DB_PORT:-3366}:3306" healthcheck: test: [ "CMD", "mariadb-admin", "ping", "-h", "localhost", "-uroot", "-pbooklore" ] interval: 10s timeout: 5s retries: 5 ui: image: node:22-alpine command: sh -c "cd /angular-app && npm install -g @angular/cli --force && npm install --force && ng serve --host 0.0.0.0" environment: - NODE_ENV=development stdin_open: true tty: true restart: unless-stopped volumes: - './booklore-ui:/angular-app' # you can have node_modules in a volume. however, if you enable this, expect trouble in some IDEs, as the deps are not available anymore # - node_modules:/angular-app/node_modules # we ignore package-lock otherwise will throw # An unhandled exception occurred: Cannot find module @rollup/rollup-linux-x64-musl. npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). # Please try `npm i` again after removing both package-lock.json and node_modules directory. - '/dev/null:/angular-app/package-lock.json' ports: - "${FRONTEND_PORT:-4200}:4200" volumes: node_modules: backend_db: