Вы можете использовать структуру, как это:
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. Вторая служба будет использовать сценарий и проверять, когда первая служба будет работать. Когда все будет готово, он начнет свою собственную службу.
Hi lorenzvth7 благодарит за ваш ответ. В этом случае я должен создать другой репозиторий, который включает в себя два других проекта (фронт и api) в качестве подмодулей? – hesyar
Я думаю, что это будет лучшее/простое решение. – lvthillo