具有多个基本映像的Dockerfile

时间:2017-01-11 08:51:57

标签: docker dockerfile

我正在尝试创建一个简单的dockerfile,我需要在多个步骤中构建我的nodejs项目:

  • 安装和缓存我的依赖项
  • 运行我的单元测试
  • 运行我的验收测试
  • 构建我的项目

确保我的项目运作良好。这就是我现在所拥有的:

FROM node:6.9

# Enviroment variables
ENV HOMEDIR /data

RUN mkdir -p ${HOMEDIR}
WORKDIR ${HOMEDIR}

# install all dependencies
ADD package.json ./
RUN npm install

# ... some stuff goes here without any importance
# add node content initially
ADD . .
CMD CI=true npm test && npm run test:acceptance && npm run build

运行验收测试时,我使用的是selenium服务器。 我需要java

事实是我没有安装java,我想使用"标准"图片,同时保存我当前的节点:6.9图片,这样我就可以轻松地从版本切换到版本(如https://hub.docker.com/_/openjdk/)。我的意思是我不想在我当前的图像上手动安装JAVA。

我的问题是我无法在我的dockerfile中使用多个FROM源,而且我也不知道我的需要是否可能。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

docker方式尽可能小而轻。你生产图像不需要java,selenium等......

构建和测试应用程序必须在容器之外。它可以是另一个图像(有selenium,java等;或者有多个容器的构建集群,如selenium,java等),用于构建生产图像。

答案 1 :(得分:1)

我建议您拥有一个仅包含基本操作系统和应用程序运行所需软件的基本映像。

使用该基本图像并为不同的测试创建多个图像。 完成所有测试后,使用相同的基本映像打包并对应用程序进行docker化。