Объедините образы докеров в одном контейнере

У меня есть приложение, состоящее из клиентской части, серверной части и базы данных 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"
Другие вопросы по тегам