如何从单片部署中分割出docker文件

时间:2018-02-22 20:42:13

标签: java node.js docker containers

在单个docker文件中,我使用以下命令运行Node和Java:

  1. 运行测试脚本
  2. 运行java可执行文件(以捆绑屏幕截图)
  3. 运行我的应用程序
  4. 我从文档中得到的理解是,这是一种不好的做法,因为这是一种“整体的”。部署。我应该根据各个任务将其拆分为单独的图像。所以,据推测,我会有3个泊坞文件。

    Dockerfile 1:测试脚本

    FROM node:8
    RUN node --version
    
    RUN apt-get update && apt-get install -yq libgconf-2-4
    
    # Note: this installs the necessary libs to make the bundled version of Chromium work
    RUN apt-get update && apt-get install -y wget --no-install-recommends \
        && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
        && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
        && apt-get update \
        && apt-get install -y google-chrome-unstable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst ttf-freefont \
          --no-install-recommends \
        && rm -rf /var/lib/apt/lists/* \
        && apt-get purge --auto-remove -y curl \
        && rm -rf /src/*.deb
    
    # project repo
    
    RUN git clone ...
    WORKDIR /myApp/  
    RUN npm install
    
    RUN npm i puppeteer
    
    CMD ["node", "test.ts"]
    

    Dockerfile 2:Java可执行文件(包图像)

    FROM openjdk
    RUN git clone -b ...
    
    WORKDIR /myApp/
    
    
    CMD ["java -jar", "ImageTester.jar"]
    

    Dockerfile 3:运行应用

    FROM node:8
    RUN node --version
    
    RUN git clone -b ...
    
    WORKDIR /myApp/  
    RUN npm install
    
    EXPOSE 9999
    CMD ["npm", "start"]
    

    问题是,一个人究竟是怎么做到的?在我的案例中如何实现非单一部署?如何在一个项目中运行3个泊坞窗图像?

1 个答案:

答案 0 :(得分:1)

使用docker-compose。在您的docker-compose.yml文件中,您将有3个服务指向3个不同的dockerfiles。

例如:

version: '3'
services:
  test:
    build:
      context: .
      dockerfile: Dockerfile.test
  images:
    build:
      context: .
      dockerfile: Dockerfile.images
  app:
    build:
      context: .
      dockerfile: Dockerfile.app