为了账号安全,请及时绑定邮箱和手机立即绑定

docker 组合多个项目

docker 组合多个项目

PHP
忽然笑 2022-07-16 18:25:57
我想为同一网络下的多个项目设置本地 DOCKER 环境。我想拥有将创建 Nginx 代理和 PHP 容器的主要 docker-compose 配置文件。还有许多带有自己的 Nginx 的子 docker-compose 文件。我希望所有子 Nginx 容器都监听主 PHP 容器。但由于某种原因,子 Nginx 容器因错误而失败host not found in upstream "app-php" in /etc/nginx/vhost.d/site.cong25主要docker-compose:version: '3.5'services:  app-nginx_proxy:    build: ./nginx-proxy    image: app/nginx-proxy:latest    container_name: app-nginx_proxy    ports:      - "80:80"    volumes:      - /var/run/docker.sock:/tmp/docker.sock:ro    networks:      - appnetwork  app-php:    image: app/php:latest    container_name: app-php    build:      context: ./php-fpm      dockerfile: Dockerfile    expose:      - 9000    volumes:      - app_volume:/var/www/    networks:      - appnetworkvolumes:  app_volume:    driver: local    driver_opts:      type: bind      device: "$PWD/../services"      o: bindnetworks:  appnetwork:    driver: bridge和孩子docker-compose:version: '3.5'services:  app-admin-nginx:    build: ./nginx    image: app-admin/nginx:latest    container_name: app-admin-nginx    volumes:      - app_admin_volume:/var/www/app-admin    networks:      appnetwork:        aliases:          - app-admin.v2.local    environment:      - VIRTUAL_HOST=app-admin.v2.localvolumes:  app_admin_volume:    driver: local    driver_opts:      type: bind      device: "$PWD/../services/app-admin"      o: bindnetworks:  appnetwork:    external: true还有,site.conf:server {    listen 80;    server_name app-admin.v2.local;    root /var/www/app-admin/web;    index index.html index.htm index.php;    charset utf-8;    location / {        try_files $uri $uri/ /index.php?$query_string;    }    location = /favicon.ico { access_log off; log_not_found off; }    location = /robots.txt  { access_log off; log_not_found off; }    error_log /var/log/nginx/abboom_admin_error.log;    access_log /var/log/nginx/abboom_admin_access.log;    error_page 404 /index.php;如果我将所有配置移动到单个docker-compose文件中,一切正常,但使用单个文件并不灵活,因为我想为开发人员添加仅运行他们需要的应用程序而不是我们拥有的所有应用程序的能力
查看完整描述

1 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

您的主nginx容器依赖于app-php服务。你需要先app-php开始nginx

您还需要确保这两个服务都在同一个项目中运行,以便它们使用相同的网络。您可以使用-pdocker-compose 选项。

https://docs.docker.com/compose/reference/overview/

用法:docker-compose [-f ...] [options] [COMMAND] [ARGS...]
docker-compose -h|--help

选项:-f,--file FILE 指定一个替代的撰写文件(默认:docker-compose.yml)
-p,--project-name NAME 指定一个替代的项目名称(默认:目录名称)

您还可以使用自定义网络从同一网络中的不同撰写文件启动服务。

https://docs.docker.com/compose/networking/#specify-custom-networks


查看完整回答
反对 回复 2022-07-16
  • 1 回答
  • 0 关注
  • 246 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号