我正在对我现有的应用程序进行docker化。但是有一个奇怪的问题。当我启动我的应用程序时
docker-compose up
docker-compose中的每个服务都可以成功运行,没有任何问题。但是有些服务我有时不想运行( celery , celery 节拍等)。为此我跑docker-compose run nginx
上面的命令应按照docker-compose.yml的配置运行nginx,web,db服务,但仅运行web和db,而不运行nginx。这是我的yml文件
docker-compose.yml
version: '3'
services:
db:
image: postgres:12
env_file: .env
environment:
- POSTGRES_DB=${DB_NAME}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
ports:
- "5431:5432"
volumes:
- dbdata:/var/lib/postgresql/data
nginx:
image: nginx:1.14
ports:
- "443:443"
- "80:80"
volumes:
- ./config/nginx/:/etc/nginx/conf.d
- ./MyAPP/static:/var/www/MyAPP.me/static/
depends_on:
- web
web:
restart: always
build: ./MyAPP
command: bash -c "
python manage.py collectstatic --noinput
&& python manage.py makemigrations
&& python manage.py migrate
&& gunicorn --certfile=/etc/certs/localhost.crt --keyfile=/etc/certs /localhost.key MyAPP.wsgi:application --bind 0.0.0.0:443 --reload"
expose:
- "443"
depends_on:
- db
env_file:
- .env
volumes:
- ./MyAPP:/opt/MyAPP
- ./config/nginx/certs/:/etc/certs
- ./MyAPP/static:/var/www/MyAPP.me/static/
broker:
image: redis:alpine
expose:
- "6379"
celery:
build: ./MyAPP
command: celery -A MyAPP worker -l info
env_file:
- .env
volumes:
- ./MyAPP:/opt/MyAPP
depends_on:
- broker
- db
celery-beat:
build: ./MyAPP
command: celery -A MyAPP beat -l info
env_file:
- .env
volumes:
- ./MyAPP:/opt/MyAPP
depends_on:
- broker
- db
comment-classifier:
image: codait/max-toxic-comment-classifier
volumes:
dbdata:
最佳答案
TL; dr:docker-compose up nginx
docker-compose up
和docker-compose run
之间有明显的区别。首先构建,(重新)创建,启动并附加到服务容器。第二个针对服务运行一次命令。当您执行docker-compose run
时,由于nginx依赖它们而启动db和web,然后在nginx上运行一个命令并退出。因此,您必须使用docker-compose up nginx
才能获得所需的内容。
关于docker - Nginx不以docker-compose run命令开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64091764/