2017-02-14 17 views
0

Я новичок в докере. Позвольте мне описать мой сценарий: Я сделал 2 изображения докеров для веб-приложения. одно изображение представляет собой интерфейсный веб-уровень для представления, а второй - это базовый уровень, предоставляющий услугу REST.Как сделать путь без жесткого кодирования в изображении докеров, чтобы позвонить в службу backend?

Так что мне нужно запустить 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

С докеров 1.10 вы можете использовать networking. То, что это делает, связывает ip-адрес контейнера докера с именем хоста, которое может использоваться в контейнере.

Если вы используете docker-compose, сеть автоматически создается, и обе службы могут разговаривать друг с другом. Вот пример одного:

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

Пропустил это спасибо @Matt – jrbeverly

+0

@jrbeverly Большое спасибо! Таким образом, я решил свою проблему! –