代码之家  ›  专栏  ›  技术社区  ›  famas23

容器如何在docker compose中相互链接。yml公司

  •  -1
  • famas23  · 技术社区  · 7 年前

    为了构建web服务器,我试图了解容器是如何 附件 我真的需要一些快速的答案。
    如果我们拿这个 docker-compose.yml 以文件为例:

    version: '2'
    
    services:
    
        # APP
        nginx:
            build: docker/nginx
            volumes_from:
                - php
            links:
                - php
            depends_on:
                - php
    
        php:
            build: docker/php
            volumes:
                - ${SYMFONY_APP_PATH}:/symfony
            links:
                - mysql
                - faye
                - rabbitmq
                - elasticsearch
    
        client:
            image: node:8.9.4
            volumes_from:
                - php
            working_dir: /symfony
            user: 1000:1000
            command: "npm run dev"
            ports:
              - "${LIVERELOAD_PORT}:35729"
            environment:
              LIVERELOAD_PORT: ${LIVERELOAD_PORT}
    
        mysql:
            build: docker/mysql
            environment:
                MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
                MYSQL_DATABASE: ${MYSQL_DATABASE}
                MYSQL_USER: ${MYSQL_USER}
                MYSQL_PASSWORD: ${MYSQL_PASSWORD}
            volumes:
                - ${SYMFONY_APP_PATH}:/symfony
                - "mysql:/var/lib/mysql"
        rabbitmq:
            image: rabbitmq:3.4-management
            volumes:
              - "rabbitmq:/var/lib/rabbitmq"
    
            volumes:
              - "elasticsearch5:/usr/share/elasticsearch/data"
              - ${SYMFONY_APP_PATH}:/symfony
    volumes:
        mysql: ~
        elasticsearch5: ~
        rabbitmq: ~
    

    有什么区别 between volumes_from ,则, links depends_on ?
    如果我们的想法是将每个容器与另一个容器连接在一起,那么我们为什么不只使用 链接 。两者的区别是什么 卷\u自 ,则, 链接 取决于

  • 为什么在我的例子中 ngnix 依赖/链接到 php 容器为什么不是相反呢?
  • 在文件页脚处,有一个卷配置
    volumes: mysql: ~ elasticsearch5: ~ rabbitmq: ~ 但我认为我们已经定义了每个容器的体积,那么这种配置的主要原因是什么?

  • 为什么我们不只使用一个使用php、ngnix和mysqld的web容器呢?为什么我们要将它们分开呢?
  • 1 回复  |  直到 7 年前
        1
  •  1
  •   Yuankun    7 年前

    volumes\u from、links和dependens\u之间的区别是什么?

    二者都 links depends_on 为容器提供相互通信的方式。

    链接 是旧功能,将来将不推荐使用,因此请避免使用 链接 只要可能。

    volumes_from 用于其他目的,与 链接 取决于

    在我的示例中,为什么ngnix依赖/链接到php容器?为什么不是相反呢?

    取决于 定义服务启动的顺序。在您的示例中,您使用Nginx作为PHP服务的代理服务器。因此,您可能希望在Nginx之前启动PHP服务。

    为什么我们不只使用一个使用php、ngnix和mysqld的web容器呢?为什么我们要将它们分开呢?

    Docker的最佳实践之一是保持每个容器足够简单,以便只执行一项工作。很像Unix的“只做一件事,把它做好”哲学。

    单一责任原则是一件好事,接受它吧。