docker 组合多个项目

我想为同一网络下的多个项目设置本地 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:

      - appnetwork

volumes:

  app_volume:

    driver: local

    driver_opts:

      type: bind

      device: "$PWD/../services"

      o: bind

networks:

  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.local

volumes:

  app_admin_volume:

    driver: local

    driver_opts:

      type: bind

      device: "$PWD/../services/app-admin"

      o: bind

networks:

  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文件中,一切正常,但使用单个文件并不灵活,因为我想为开发人员添加仅运行他们需要的应用程序而不是我们拥有的所有应用程序的能力


忽然笑
浏览 247回答 1
1回答

千万里不及你

您的主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
打开App,查看更多内容
随时随地看视频慕课网APP