version: '3.5' x-postgres-variables: &postgres-variables POSTGRES_DB: "${POSTGRES_DB}" POSTGRES_HOST: "${POSTGRES_HOST}" POSTGRES_PORT: "${POSTGRES_PORT}" POSTGRES_USER: "${POSTGRES_USER}" POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" POSTGRES_HOST_AUTH_METHOD: "${POSTGRES_HOST_AUTH_METHOD}" x-django-variables: &django-variables PYTHONUNBUFFERED: 1 DJANGO_PORT: "${DJANGO_PORT}" DEBUG: "${DEBUG}" x-frontend-variables: &frontend-variables DOMAIN: "${DOMAIN}" REACT_APP_DOMAIN_URL: "https://${DOMAIN}/" x-martin-variables: &martin-variables MARTIN_PORT: "${MARTIN_PORT}" services: django: container_name: ${CONTAINERS_NAME}_django build: . command: > sh -c "python manage.py migrate && python manage.py collectstatic --noinput && python manage.py runserver 0.0.0.0:${DJANGO_PORT}" environment: <<: *postgres-variables <<: *django-variables volumes: - .:/code - ./django_static/:/code/django_static/ - ./media/:/code/media/ ports: - "${DJANGO_PORT}:${DJANGO_PORT}" expose: - "${DJANGO_PORT}" restart: always depends_on: - db db: container_name: ${CONTAINERS_NAME}_db image: mdillon/postgis environment: <<: *postgres-variables ports: - "${POSTGRES_PORT}:${POSTGRES_PORT}" expose: - "${POSTGRES_PORT}" volumes: - ${POSTGRES_VOLUME_PATH}:/var/lib/postgresql/data command: -p ${POSTGRES_PORT} martin: container_name: ${CONTAINERS_NAME}_martin image: urbica/martin ports: - "${MARTIN_PORT}:3000" environment: <<: *martin-variables WATCH_MODE: "true" DATABASE_URL: "postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:${POSTGRES_PORT}/${POSTGRES_DB}" depends_on: - db - django restart: always frontend: container_name: ${CONTAINERS_NAME}_frontend build: postamates_frontend volumes: - ./build/:/usr/src/postamates_frontend/build/ command: sh -c "yarn build" environment: <<: *frontend-variables depends_on: - db - martin - django deploy: resources: limits: memory: 4096M reservations: memory: 4096M