Да, рефакторинг - хорошая идея. Попробуйте сделать сервис эфемерным и запустить в нем только один главный процесс. Итак, в конечном итоге вам нужно иметь что-то вроде этого:
version: '3.4'
services:
web:
build:
dockerfile: Dockerfile
context: .
ports:
- 8000:8000
volumes:
- .:/app/
env_file:
- common.env
nginx:
restart: always
image: nginx:1.18-alpine
ports:
- 80:80
- 443:443
volumes:
- ./deployment/nginx.conf:/etc/nginx/conf.d/default.conf
- ./deployment/config.conf:/etc/nginx/nginx.conf
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\";'"
depends_on:
- web
Он предназначен для того, чтобы иметь только один основной процесс в контейнере, в этом случае, если ваше приложение выйдет из строя, контейнер будет отключен.