У меня есть приложение, которое работает в 2 контейнерах. NodeJS и контейнер nginx. Они работают вместе. В коде разработчика есть src / app / app.config.js
(function () {
'use strict';
angular
.module('app')
.constant('config', {
URL: 'http://localhost',
PORT: '8888',
});
})();
URL-адрес и ПОРТ в порядке в случае разработчика. Чтобы увидеть приложение после его локальной сборки. Но что мы делаем? Что ж, у нас есть jenkins, который выполняет npm-install, сборку gulp и т. д. После сборки. Правильно сгенерированные папки будут скопированы Dockerfiles (одна для nginx и одна для nodejs). После этого мы можем запускать контейнеры с помощью этой команды:
docker run --restart=always -d --name "nodejs" our-nodejs-image:11
docker run --restart=always -d -p 80:80 --name nginx --link nodejs:nodejs our-nginx-image:11
Основная проблема заключается в следующем. URL и ПОРТ должны измениться. Так, например, мы запускаем наши контейнеры на ec2-123:80
, тогда нам нужно изменить URL-адрес на ec2-123
и ПОРТ на 80
(поскольку nginx работает как обратный прокси-сервер для наших узлов).
Таким образом, в этом случае мы теряем преимущество докера (запуск образа в каждой среде). Итак, нам нужна переменная окружения, которую мы можем описать при выполнении команды docker run
. И эти переменные должны быть вводом URL: и PORT:.
Таким образом, команда запуска для nginx должна быть примерно такой:
docker run -e "URL: ec123" -e "PORT:80" --restart=always -d -p 80:80 --name nginx --link nodejs:nodejs our-nginx-image:11