将docker镜像加入单个容器中

时间:2018-04-23 12:14:33

标签: docker docker-compose dockerfile docker-swarm docker-multi-stage-build

我有一个由前端,后端和mongodb数据库组成的应用程序,每个都在一个容器中进行了对接。当我使用docker compose构建它时,我的应用程序(3)中的部分图像数量一样多。

有没有办法从这3张图片构建单个容器,因此只能生成一张图片?

由于

2 个答案:

答案 0 :(得分:1)

如果要将应用程序作为单个容器运行,可以编写Dockerfile。它也会给你单个图像。

答案 1 :(得分:0)

如果你真的想,我想你可以做到这一点。首选方法是使用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"