docker - 是否可以为具有相同配置的多个容器制作通用的 dockerfile?

标签 docker docker-compose dockerfile

举个例子:

Dockerfile for container1 : 

FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y php5 php5-mysql

Dockerfile for container2 : 

FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y php5 php5-mysql php5-dev php5-gd php5-memcache 
php5-pspell

所以需要避免,

FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y php5 php5-mysql

因为这是两个 Dockerfile 中的相同配置。

最佳答案

查看多阶段构建:https://docs.docker.com/develop/develop-images/multistage-build/

你的例子会变成:

FROM ubuntu:14.04 as image1
RUN apt-get update
RUN apt-get install -y php5 php5-mysql

FROM image1 as image2
RUN apt-get install -y php5-dev php5-gd php5-memcache php5-pspell

您的构建命令需要使用 --target 标志指定构建目标。

关于docker - 是否可以为具有相同配置的多个容器制作通用的 dockerfile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50699026/

相关文章:

docker - 当我尝试将 mysql 与 nodejs 连接时,我的 docker-compose 无法正常工作

docker - 我如何告诉我的Dockerfile在docker-compose的RUN命令中使用哪个DNS?

使用 `apt update` 运行时,Docker 构建在软件属性通用上停止

docker - Jenkins构建无法安装pngquant

nginx - 让我们在 AWS ECS 上加密 docker nginx

docker - 如何使用 marathon Rest API 获知容器名称

azure - 使用 docker-compose 将 azure 容器注册表镜像部署到 azure Web 应用程序中

mysql - 在rails项目中制作Docker Image时出现错误(无法安装mysql-client)

php - 是否可以在现有的Alpine 3.12 Docker镜像上安装PHP7.4?

docker - 从 docker 容器运行 ansible playbook 并部署在主机上