2017-02-22 23 views
0

У меня есть вопрос относительно лучшей практики.Лучшая практика использования Dockerfile с docker-compose и vcs

Допустим, у меня есть webfrontend, разработанный в angularjs и api для получения данных. Я помещал эти два в отдельные репозитории. Теперь я хочу закрепить все это. Моя идея заключалась в том, чтобы поместить файл Docker в каждый проект, который определяет их среду. До сих пор его штраф, но что, когда у меня также есть файл для докеры, который запускает эти две службы одновременно? Во-первых, в каком репо я должен поместить этот файл, а во-вторых, как я могу заверить, что изображения всегда устарели?

ответ

1

Вы можете использовать структуру, как это:

project/ 
- project/docker-compose.yaml 
- project/frontend/ (contains Dockerfile + necessary files) 
- project/api/ (contains Dockerfile + necessary files) 

в вашем docker-compose.yaml вы можете написать что-то вроде этого для каждого изображения:

frontend: 
    build: ./frontend #folder in which Dockerfile of frontend is saved (to build the image) 
    image: my-frontend:1.0 #give a name to your image 
container_name: frontend-container #containername when a container instance of your image is running 

Для начала docker-compose вы можете запустить docker-compose up --build. Тег --build будет воссоздавать ваши изображения, когда есть изменения, поэтому вы можете сохранить свою композицию в актуальном состоянии, когда есть изменения в файле dockerfile (изображение).

Docker-compose is 'reading' from the bottom. Поэтому сначала будет создан сервис, который вы описываете первым в своем docker-compose.yaml. Я бы подумал, что это ваш API, потому что он может существовать сам по себе, и ваш интерфейс должен подключиться к нему. Иногда ваш первый сервис запускается слишком медленно, а это значит, что вторая услуга уже установлена, но не может найти первую услугу (для связи) и она выйдет из строя. Это можно решить, используя сценарий wait-for-it.sh. Вторая служба будет использовать сценарий и проверять, когда первая служба будет работать. Когда все будет готово, он начнет свою собственную службу.

+0

Hi lorenzvth7 благодарит за ваш ответ. В этом случае я должен создать другой репозиторий, который включает в себя два других проекта (фронт и api) в качестве подмодулей? – hesyar

+1

Я думаю, что это будет лучшее/простое решение. – lvthillo

Смежные вопросы