2015-07-01 2 views
1

У меня есть nodejs приложение, которое имеет две точки входа worker.js и web.jsСоздание изображения с той же Dockerfile

В основном, веб должны отвечать на все входящие запросы HTTP и работник должны выполнять некоторые вспомогательные задачи.

Вот вопрос, как я могу создать два отдельных изображения с одной и той же кодовой базы? Проблема в том, что я не могу создать отдельную папку внутри моего проекта с разными Dockerfiles, потому что я не могу выполнить ADD ../ /app, и я не хочу хранить две копии кода. Проект находится в git-репо, но не публикуется.

bash docker run -d -p 80:80 --name app-web application-web docker run -d --name app-worker application-worker

Благодаря

+0

Не уверен, что я правильно, что вы хотите понять, для достижения, возможно, создать образ с общей частью файла Docker, вызвать его mybase, затем в первом Dockerfile 'FROM mybase ADD ..//app' во втором Dockerfile' FROM mybase other stuff' – user2915097

+0

Ну, тогда у меня есть для создания общего изображения и двух других изображений, h теперь у меня должно быть три Dockerfiles вместо двух, что довольно запутывает. Извините, если мой вопрос сейчас очень ясный. –

+0

Да, но время сборки будет почти мгновенным, так как вы будете делать очень мало при создании приложения-сети или приложения-работника – user2915097

ответ

1

Палка с одного изображения на кодовой базе, и использовать --workdir или просто разные CMD с, чтобы запустить соответствующий скрипт:

docker run -d -p 80:80 --name app-web -w /app/web application 
docker run -d --name app-worker -w /app/worker application 
+0

Я думал об этом, но не знал, хорошая идея или нет. –

1

ответ Абдуллы является рекомендуемым IMO (для сохранения некоторого дискового пространства).

Но чтобы ответить на вопрос по умолчанию, вы можете создать изображение с 2 различными метками:

# assuming we're in the Dockerfile directory 
docker build -t application-web . 
docker build -t application-worker . 

Затем запускать различные контейнеры из этих изображений:

docker run -d -p 80:80 --name app-web application-web 
docker run -d --name app-worker application-worker 
Смежные вопросы