docker - Nginx不以docker-compose run命令开头

标签 docker nginx server docker-compose dockerfile

我正在对我现有的应用程序进行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 nginxdocker-compose updocker-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/

相关文章:

linux - 从 gitlab ci 中的 shell 脚本安装后,节点和 npm 无法识别

wordpress - 在 Dockerized Lemp 上部署 WordPress 时出现 502 Bad Gateway 错误?

docker - 了解Kubernetes布局

php - 在同一个 vps 上运行 node、PHP 和 Python

node.js - HTML-PDF npm 在本地主机上工作但不在 IP 登台服务器上工作?

angular - Angular 5 nginx Mongoose docker ERR_EMPTY_RESPONSE

php - "Connection Refused"或 "No Such File or Directory"

docker - 在 jenkins docker 容器上运行命令以将文件复制到主机

linux - AWS EC2 : Migrating from Windows to Linux Server

java - 在 Tomcat 9 上运行的多线程服务器