Объедините образы докеров в одном контейнере
У меня есть приложение, состоящее из клиентской части, серверной части и базы данных mongodb, каждая из которых докеризована в контейнере. Когда я создаю их с помощью docker compose, у меня в приложении столько же изображений, сколько частей (3).
Есть ли способ построить один контейнер из этих трех изображений и, следовательно, одного изображения?
Спасибо
2 ответа
Вы можете написать Dockerfile, если хотите запускать свое приложение как один контейнер. это также даст вам одно изображение.
Я думаю, вы могли бы сделать это, если бы вы действительно этого хотели. Для этого предпочтительнее использовать docker-compose. Я хотел бы предложить вам создать файл docker-compose.yml, который поможет вам настроить это:
nginx->frontend (possibly with server side rendering) -> backend -> mongodb
Идея docker-compose состоит в том, чтобы легко запустить и запустить это многоконтейнерное приложение с помощью файла docker-compose.yml, после чего вы можете просто запустить приложение с помощью:
$ docker-compose up
Вы можете настроить его следующим образом: (Это гипотетический файл docker-compose.yml, но с вашими правильными значениями он должен работать. Дайте мне знать, если у вас есть какие-либо вопросы:
version: '2'
services:
frontend-container:
image: frontend:latest
links:
- backend-container
environment:
- DEBUG=True
restart: always
environment:
- BASE_HOST=http://backend-container:8000/
backend-container:
image: nodejs-backend:latest
links:
- mongodb
environment:
- NODE_ENV=production
- BASE_HOST=http://django-container:8000/
restart: always
mongodb:
image: mongo:latest
container_name: "mongodb"
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
volumes:
- ./data/db:/data/db
command: mongod --smallfiles --logpath=/dev/null
nginx-container:
image: nginx-container-custom-config:latest
links:
- frontend-container
ports:
- "80:80"