原文: http://www.itmuch.com/docker/08-docker-dockerfile-in-action/
本節通過幾個例子,來工具Dockerfile的知識。
實戰1:使用Dockerfile修改Nginx首頁
建立一個Dockerfile,内容如下:
FROM nginx
RUN echo '<h1>Spring Cloud與Docker微服務實戰</h1>' > /usr/share/nginx/html/index.html
實戰2:使用Dockerfile在CentOS 7中安裝Nginx
盡管Docker Hub中已存在基于CentOS 7的鏡像,但仍可使用本例的内容學習、鞏固Dockerfile的相關知識。
基于CentOS 7鏡像,在其中安裝Nginx,并啟動。
提示:預設Nginx不在官方Yum倉庫中,需要先安裝RPMS倉庫包,這樣才能用Yum安裝Nginx。安裝RPMS包的指令如下:
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
答案
FROM centos:7
RUN rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum -y install nginx
RUN sed -i '1i\daemon off;' /etc/nginx/nginx.conf
ENTRYPOINT nginx
實戰3:使用Dockerfile建構一個Spring Boot應用鏡像
有一個Java應用,在裸機中的啟動指令是
java -jar xxx.jar
,請将其制作成Docker鏡像,并啟動。
# 基于哪個鏡像
FROM java:8
# 将本地檔案夾挂載到目前容器
VOLUME /tmp
# 拷貝檔案到容器,也可以直接寫成ADD xxxxx.jar /app.jar
ADD xxxxx.jar app.jar /app.jar'
# 聲明需要暴露的端口
EXPOSE 8761
# 配置容器啟動後執行的指令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
鞏固:閱讀常用軟體的Dockerfile
- Nginx: https://github.com/nginxinc/docker-nginx/blob/849fed0093112cd9f55491fccd2f861eb9fad5f9/stable/alpine/Dockerfile
- Tomcat: https://github.com/docker-library/tomcat/blob/0e9a915bf893faa9160ab1a144c7ba5049a4fe27/7/jre7-alpine/Dockerfile
- 關于Alpine Linux: http://www.cnblogs.com/zhangmingcheng/p/7122386.html