首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在码头组合中解析extra_hosts选项中的容器名称

在码头组合中解析extra_hosts选项中的容器名称
EN

Stack Overflow用户
提问于 2017-11-30 15:56:06
回答 5查看 25.2K关注 0票数 24

我需要从另一个容器中压缩API。容器1称为nginx容器2称为fpm

我需要能够击打到我的fpm容器并卷起nginx容器。

配置:

代码语言:javascript
复制
#docker-compose.yaml
services:
 
  nginx:
    build:
      context: .
      dockerfile: ./docker/nginx/Dockerfile
    volumes:
      - ./docker/nginx/conf/dev/api.conf:/etc/nginx/conf.d/default.conf
    ports:
      - 8080:80
    links:
      - fpm
    
    
  fpm:
    build:
      context: .
      dockerfile: ./docker/fpm/Dockerfile
    volumes:
      - .:/var/www/html
      - ./docker/fpm/conf/dev/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
      - ./docker/fpm/conf/dev/api.ini:/usr/local/etc/php/conf.d/api.ini
    env_file:
      - ./docker/mysql/mysql.env
      - ./docker/fpm/conf/dev/fpm.env
    links:
      - mysql
    shm_size: 256M
    extra_hosts:
      - myapi.docker:nginx

我最初的想法是把它塞进extra_hosts选项中,比如:

代码语言:javascript
复制
extra_hosts:
  - myapi.docker:nginx

但是码头组合失败了:

错误:对于apiwip_fpm_1,无法为服务fpm创建容器: address:"nginx“中的无效IP地址

我见过一些使用docker网络配置的人的例子,但似乎只是解析一个地址。

我如何解析/评估容器的IP地址而不仅仅是字面上传递它?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-02-02 13:31:27

在默认网络中添加网络别名

代码语言:javascript
复制
version: "3.7"
services:

  nginx:
    # ...
    networks:
      default:
        aliases:
          - example.local

  browser-sync:
    # ...
    depends_on:
      - nginx
    command: "browser-sync start --proxy http://example.local"
票数 22
EN

Stack Overflow用户

发布于 2018-10-02 09:42:54

代码语言:javascript
复制
services:
  nginx:
    build:
    context: .
    dockerfile: ./docker/nginx/Dockerfile
    volumes:
      - ./docker/nginx/conf/dev/api.conf:/etc/nginx/conf.d/default.conf
    ports:
      - 8080:80
    networks:
      my_network:
        aliases:
          - myapi.docker
          - docker_my_network
  fpm:
    build:
    context: .
    dockerfile: ./docker/fpm/Dockerfile
    volumes:
      - .:/var/www/html
      - ./docker/fpm/conf/dev/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
      - ./docker/fpm/conf/dev/api.ini:/usr/local/etc/php/conf.d/api.ini
    env_file:
      - ./docker/mysql/mysql.env
      - ./docker/fpm/conf/dev/fpm.env
    links:
      - mysql
    shm_size: 256M
    networks:
      - my_network

  networks:
    my_network:
      driver: bridge
  • 添加自定义网络并向该网络添加容器
  • 默认情况下,如果来自fpm的curl nginx容器是curl localhost,那么我们需要在nginx配置中添加别名,使其与您的servername相同
  • 使用此解决方案,您可以从fpm容器中缓存myapi.docker。

@edward让我知道这个解决方案是否适合你

编辑: Jack_Hu是对的,我删除了extra_hosts。网络别名就够了。

票数 9
EN

Stack Overflow用户

发布于 2019-05-03 11:36:18

我用links而不是extra_hosts来解决这类问题。

在这种情况下,只需设置link alias就可以帮助您。

服务fpm设置

代码语言:javascript
复制
links
  - nginx:myapi.docker

请参阅docker-撰写链接文档,别名可以是出现在代码中的域。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47577490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档