我想创建自己的泊坞窗图像。我使用 Dockerfile 创建它,并且只想运行 httpd 服务器和 mysql 客户端。下面可以看到我的编辑文件。我的 Dockerfile 是否正确?
# Dockerfile that modifies oraclelinux:6.6 to include an Apache HTTP server
FROM ubuntu:14.04
RUN apt-get -y install apache2
RUN echo "HTTP server running on guest" > /var/www/html/index.html
EXPOSE 80
RUN apt-get -y install mysql-client
EXPOSE 3306
答案1
不,这是不正确的,因为您应该在最后运行 CMD。
您还应该包括一些最佳实践,以创建更少的中间容器快照和更小的输出:
- 你不应该运行
apt-get
多次 - 你应该
apt-get update
在跑步之前跑步apt-get install
- 你应该在跑步后清理干净
apt-get install
- 你应该包括一名维护者
尝试类似的方法:
# Dockerfile that modifies oraclelinux:6.6 to include an Apache HTTP server
FROM ubuntu:14.04
MAINTAINER Supun Rathnayake
RUN apt-get update && apt-get install -y \
apache2 \
mysql-client \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN echo "HTTP server running on guest" > /var/www/html/index.html
EXPOSE 80
EXPOSE 3306
CMD ["your command to run apache"]
您可能应该查看 docker-hub 中的 apache2 项目,该项目有大量下载并分析其 Dockerfile,这非常有启发性。
原则上,您可以在同一个容器中运行 mysql 客户端,但这可能需要一些调度程序来启动 apache 和 mysql 守护进程。或者,您应该考虑将 mysql 放在其他地方(或者使用 Dockerhub 中的标准容器之一并将它们链接到您的容器)。