2017-11-30 11 views
1

다른 컨테이너에서 내 API를 말려 야합니다. 컨테이너 1 컨테이너 2의 nginx 라고하는 것은 FPMdocker-compose의 extra_hosts 옵션에서 컨테이너 이름 확인

내 FPM 용기에 비난과의 nginx 컨테이너를 곱슬 곱슬 수 to가 필요

이라고합니다.

구성은 :

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 옵션에 때려했다 :

extra_hosts: 
    - myapi.docker:nginx 

그러나 고정 표시기 - 작곡까지하는 것은 실패 :

ERROR: for apiwip_fpm_1 Cannot create container for service fpm: invalid IP address in add-host: "nginx"

내가 가진 도커의 네트워크 구성을 사용하는 사람들의 몇 가지 예를 보았습니다. 주소.

글자 그대로 전달하는 대신 컨테이너의 IP 주소를 어떻게 해결할 수 있습니까?

답변

0

빠른 수정 프로그램은 도커가 생성 한 동적 IP를 가리 킵니다. 그래도 변할 수 있습니다 ... 그래.

찾기 당신의 네트워크 : docker network ls

NETWORK ID   NAME     DRIVER    SCOPE 
72fef1ce7a50  apiwip_default  bridge    local <-- here 
cdf9d5b885f6  bridge    bridge    local 
2f4f1e7038fa  host     host    local 
a96919eea0f7  mgadmin_default  bridge    local 
30386c421b70  none     null    local 
5457b953fadc  website2_default  bridge    local 
1450ebeb9856  anotherapi_default bridge    local 

복사

docker network inspect 72fef1ce7a50

"Containers": { 
      "345026453e1390528b2bb7eac4c66160750081d78a77ac152a912f3de5fd912c": { 
       "Name": "apiwip_nginx_1", 
       "EndpointID": "6504a3e4714a6ba599ec882b21f956bfd1b1b7d19b8e04772abaa89c02b1a686", 
       "MacAddress": "02:42:ac:14:00:05", 
       "IPv4Address": "172.20.0.5/16", <-- CIDR block 
       "IPv6Address": "" 
      }, 
      "ea89d3089193825209d0e23c8105312e3df7ad1bea6b915ec9f9325dfd11736c": { 
       "Name": "apiwip_fpm_1", 
       "EndpointID": "dc4ecc7f0706c0586cc39dbf8a05abc9cc70784f2d44c90de2e8dbdc9148a294", 
       "MacAddress": "02:42:ac:14:00:04", 
       "IPv4Address": "172.20.0.4/16", 
       "IPv6Address": "" 
      } 
     }, 

가 extra_hosts 옵션이 CIDR 블록에서 IP 주소를 추가 네트워크 ID :

extra_hosts: 
    - myapi.docker:172.20.0.5 
고정 표시기 문서에서
1

,

https://docs.docker.com/compose/networking/

당신은 당신의 고정 표시기 네트워크 내에서 호스트 이름으로 (이 경우 nginx에) 서비스 이름을 사용할 수 있어야합니다. 따라서 FPM 컨테이너에 침입하여 curl nginx으로 전화하면 부두 관리자가 문제를 해결합니다. 희망이 도움이됩니다.

+0

정말'/ etc/hosts'에 별칭이 필요합니다. – Edward