version: '3.8' services: db: image: postgres:13 restart: always environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - db_data:/var/lib/postgresql/data - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql healthcheck: test: [ "CMD-SHELL", "pg_isready && psql -U ${POSTGRES_USER} -d ${POSTGRES_DB} -c 'SELECT 1'" ] interval: 5s timeout: 5s retries: 10 bot: build: context: . dockerfile: bot/Dockerfile restart: always environment: BOT_TOKEN: ${BOT_TOKEN} DB_HOST: db DB_NAME: ${POSTGRES_DB} DB_USER: ${POSTGRES_USER} DB_PASSWORD: ${POSTGRES_PASSWORD} volumes: - ./bot/src:/app tty: true depends_on: db: condition: service_healthy web: build: context: . dockerfile: web/Dockerfile restart: always environment: DB_HOST: db DB_NAME: ${POSTGRES_DB} DB_USER: ${POSTGRES_USER} DB_PASSWORD: ${POSTGRES_PASSWORD} WEB_USERNAME: ${WEB_USERNAME} WEB_PASSWORD: ${WEB_PASSWORD} volumes: - ./web/src:/app ports: - "8000:8000" tty: true depends_on: db: condition: service_healthy volumes: db_data: