具有多个基础镜像的 Dockerfile

标签 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 源,而且我不知道我需要的是否可能。

有什么建议吗?

最佳答案

docker 的方式是拥有尽可能小、轻量级的镜像。你生产图像不需要java,selenium等...

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

关于具有多个基础镜像的 Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41586377/

相关文章:

git - 获取 Dockerfile 中的分支名称

mysql - Dockerfile和后台运行mysql服务器

docker - 如何为多项目.NET Core WebAPI创建Dockerfile?

javascript - Angular 中的操作系统环境变量

elasticsearch - 如何使用fluentD解析多行docker日志?

linux - 在 coreos 上将容器暴露给互联网

python - 来自 Docker 的文档 : Could not find a version that satisfies the requirement apturl==0. 5.2(及其他)

laravel - 普通 HTTP 请求被发送到 HTTPS 端口报错 Docker nginx

ruby-on-rails - Docker:在$ PATH中找不到Rails可执行文件

docker - Dockerfile 中未调用 RUN 命令