我正在尝试创建一个简单的 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 源,而且我不知道我需要的是否可能。
有什么建议吗?
最佳答案
docker 的方式是拥有尽可能小、轻量级的镜像。你生产图像不需要java,selenium等...
构建和测试应用程序必须在容器外部。它可以是另一个镜像(使用selenium、java等;或者使用多个容器(如selenium、java等)构建集群)用于构建生产镜像。
关于具有多个基础镜像的 Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41586377/