2017-02-14 6 views
0

나는 독에 처음이다. 시나리오를 설명해 드리겠습니다. 웹 응용 프로그램을위한 2 개의 도커 이미지를 만들었습니다. 하나의 이미지는 프리젠 테이션을위한 프론트 엔드 웹 레이어이고 다른 하나는 REST 서비스를 제공하는 백엔드 레이어입니다.docker 이미지에서 백엔드 서비스를 호출하기 위해 하드 코드되지 않은 URL 경로를 만드는 방법은 무엇입니까?

그래서이 2 개의 이미지에 대해 2 개의 컨테이너를 실행해야합니다. 프론트 엔드는 백엔드에서 서비스를 호출합니다. 이제 프런트 엔드 코드에 백엔드 URL을 작성하고 이미지를 작성해야합니다 ... 마이크로 서비스에 올바른 방법이라고 생각하지 않습니다 ...

내 노트북의 IP가 변경되면 내 이미지를 사용하고 싶지만 서비스를받을 수 없습니다 ... URL 변수를 만들고 프런트 엔드 이미지를 다시 작성하지 않고 다른 사람들이 사용할 수있게하려면 어떻게해야합니까?

Thx!

답변

0

실행하면 환경 변수를 도커 컨테이너에 전달하여이 작업을 수행 할 수 있습니다. 이 같은

뭔가 :

docker run --name frontend -e MY_APP_BACKEND_IP="192.168.7.2" -e MY_APP_BACKEND_PORT="3000" ... 

그리고 백 엔드에

이의 당신이 NodeJS를 사용하는 가정 해 봅시다, 당신은 할 수 있습니다 :

var backend_ip = process.env.MY_APP_BACKEND_IP; 

참고 : 아니 NodeJS 프로하지만, 일부 인터넷 검색을 그것을하는 방법을 보여줬다

1

Docker 1.10부터 networking을 사용할 수 있습니다. 이 기능은 컨테이너에서 사용할 수있는 호스트 이름에 도커 컨테이너의 IP 주소를 바인딩합니다.

을 사용하면 네트워크가 자동으로 만들어지고 두 서비스가 서로 통신 할 수 있습니다.

version: "2" 

services: 
    frontend: 
    image: nginx 
    networks: 
     - my-network 
    environment: 
     BACKEND_URL: "http://backend" 
    backend: 
    image: mariadb 
    networks: 
     - my-network 
    environment: 
     FRONTEND_URL: "http://frontend" 

networks: 
    my-network: 
    driver: bridge 

당신은 Getting started with multi-host networking 사용할 수 here이에 대한 자세한 내용을보실 수 있습니다 또는 당신이 Composing Multi-container Networks with Docker Compose

+1

같은 가이드를 따를 수 당신이'BACKEND_URL 의미 생각 : "HTTP : // 백엔드를 여기에 하나의 예입니다 "' – Matt

+0

그리워 그 덕분에 @ 매트 – jrbeverly

+0

@ jrbeverly 고마워요! 이런 식으로 나는 내 문제를 해결했다! –