name: bbs1org x-php: &php image: serversideup/php:8.5-fpm working_dir: /var/www/html environment: PHP_OPCACHE_ENABLE: "1" volumes: - ${BBS1ORG_PATH:-../bbs1org}:/var/www/html:rw - data:/var/www/html/app/data - avatars:/var/www/html/app/avatars - upload:/var/www/html/app/upload - plugins:/var/www/html/app/plugins - ./opcache.ini:/usr/local/etc/php/conf.d/zzz-opcache.ini:ro - ./cron.sh:/usr/local/bin/bbs1-cron:ro services: permissions: <<: *php user: "0:0" entrypoint: ["sh", "-ec", "chown -R www-data:www-data /var/www/html/app && chown root:www-data /var/www/html && chmod 775 /var/www/html"] php: <<: *php restart: unless-stopped depends_on: permissions: condition: service_completed_successfully cron: <<: *php restart: unless-stopped stop_grace_period: 0s depends_on: permissions: condition: service_completed_successfully command: ["sh", "/usr/local/bin/bbs1-cron"] mysql: image: mysql:8.4 profiles: ["mysql"] restart: unless-stopped command: --ngram-token-size=2 environment: MYSQL_DATABASE: ${DB_NAME:-forum} MYSQL_USER: ${DB_USER:-forum} MYSQL_PASSWORD: ${DB_PASSWORD:-change-this-password} MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-change-this-password} healthcheck: test: ["CMD-SHELL", "mysqladmin ping -h localhost -u root -p$${MYSQL_ROOT_PASSWORD}"] interval: 10s timeout: 5s retries: 10 volumes: - mysql:/var/lib/mysql postgres: image: postgres:18 profiles: ["pgsql"] restart: unless-stopped environment: POSTGRES_DB: ${DB_NAME:-forum} POSTGRES_USER: ${DB_USER:-forum} POSTGRES_PASSWORD: ${DB_PASSWORD:-change-this-password} healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 10s timeout: 5s retries: 10 volumes: - postgres:/var/lib/postgresql nginx: image: nginx:alpine restart: unless-stopped depends_on: - php ports: - "${HTTP_PORT:-8080}:80" volumes: - ${BBS1ORG_PATH:-../bbs1org}:/var/www/html:ro - avatars:/var/www/html/app/avatars:ro - upload:/var/www/html/app/upload:ro - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro volumes: data: avatars: upload: plugins: mysql: postgres: