version: '3.7' services: web: build: ./web container_name: palindrome-web restart: unless-stopped volumes: - ./web/app:/usr/src/palindrome-app/app - ./web/palindromes:/usr/src/palindrome-app/palindromes - ./web/functional_tests.py:/usr/src/palindrome-app/functional_tests.py - ./web/manage.py:/usr/src/palindrome-app/manage.py - ./static_volume:/usr/src/palindrome-app/staticfiles expose: - 8000 env_file: live.env depends_on: - db command: > bash -c "./wait-for-it/wait-for-it.sh db:5432 --strict --timeout=0 && gunicorn --bind 0.0.0.0:8000 --workers=4 app.wsgi:application" db: container_name: palindrome-db env_file: live.env restart: unless-stopped environment: POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_DB_NAME: ${POSTGRES_DB_NAME} expose: - 5432 image: postgres:13 volumes: - ./postgres_data:/var/lib/postgresql/data/ nginx: container_name: palindrome-nginx build: ./nginx restart: unless-stopped volumes: - ./static_volume:/usr/src/app/staticfiles ports: - 8000:80 depends_on: - web