基于Dockerfile构建Nginx、Tomcat、MySQL镜像(含包源)

​上篇文章讲述了有关Dockerfile的理论,以及演示了通过其构建的三个镜像服务httpd、sshd以及systemd。本文将结合先前的shell编程与当下的Dockerfile来给出基于Dockerfile构建Nginx、Tomcat以及MySQL模板。

​ 由于时间和篇幅问题,本文将省略build的过程。其中Nginx的构建将基于wget命令从网上下载,后两者将使用本地已有的软件包。

​ 这样的目的一方面是演示多种方式,以及对两种方式的区别,另一方面则是效率问题,从网上获取一般收到影响较大(这个体会将在您build的时候感受出来)。

​ 好了,下面直接给出对应的Dockerfile和相关文件吧。

先给出软件包链接:

链接: https://pan.baidu.com/s/1teUc4kqzLH1kZS7Vu3znaQ

关注Linux公社微信公众号(linuxidc_com),(见https://www.linuxidc.com/Linux/2013-12/93755.htm),在Linux公社微信公众号后台发送发送“163012”即可获得。

基于Dockerfile的Nginx镜像构建

目录结构

[root@localhost nginx]# tree ./ ./ ├── Dockerfile └── nginx.sh 0 directories, 2 files

Dockerfile以及其他文件

#基于dockerfile构建nginx镜像 #设置基础镜像 FROM CentOS:7 #维护该镜像的用户信息 MAINTAINER lokott@123.com #指令集 #更新及安装相关工具 RUN yum update -y RUN yum install -y wget lsof telnet net-tools gcc gcc-c++ make pcre pcre-devel zlib zlib-devel #从官网上下载nginx软件包源并解压 RUN wget RUN tar zxf nginx-1.16.1.tar.gz #创建nginx用户 RUN useradd -M -s /sbin/nologin nginx #指定后续RUN指令的工作目录 WORKDIR nginx-1.16.1 #配置参数以及编译nginx RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module RUN make && make install #ENV PATH /usr/local/nginx/sbin:$PATH #端口设置 EXPOSE 80 EXPOSE 443 #以非daemon方式运行 RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf #切换工作目录 WORKDIR /root/nginx ADD nginx.sh /nginx.sh RUN chmod 755 /nginx.sh #启动容器执行指令 CMD ["/nginx.sh"]

shell脚本文件

[root@localhost nginx]# cat nginx.sh #!/bin/bash /usr/local/nginx/sbin/nginx

对比手工编译的shell脚本是不是非常类似呢?其中需要注意的有两点:

1、从网上下载需要安装wget工具进行软件包下载并且需要执行tar命令解压,而本地有软件包则会自动解压(看下面两个服务构建镜像过程就可以理解了)

2、nginx通过服务是需要关闭后台运行,否则一直会无法正常运行容器

构建及运行

[root@localhost nginx]# docker build -t nginx:centos . [root@localhost nginx]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost nginx]# docker run -d -P nginx:centos 3d4c431bf95feded1928268a4237768ca7ed2b362ef3cf582cab7e9d49cc4669 [root@localhost nginx]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3d4c431bf95f nginx:centos "/nginx.sh" 4 seconds ago Up 3 seconds 0.0.0.0:32772->80/tcp, 0.0.0.0:32771->443/tcp distracted_mclean

测试:浏览器访问ip:32772 此时不能访问32771,因为涉及到ssl证书及其他服务

基于Dockerfile构建Nginx、Tomcat、MySQL镜像(含包源)

基于Dockerfile的Tomcat镜像构建

目录结构

[root@localhost tomcat]# tree . . ├── apache-tomcat-9.0.16.tar.gz ├── Dockerfile └── jdk-8u91-linux-x64.tar.gz 0 directories, 3 files

Dockerfile文件

FROM centos:7 MAINTAINER this is tomcat ADD jdk-8u91-linux-x64.tar.gz /usr/local WORKDIR /usr/local RUN mv jdk1.8.0_91 /usr/local/Java ENV JAVA_HOME /usr/local/java ENV JAVA_BIN /usr/local/java/bin ENV JRE_HOME /usr/local/java/jre ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar ADD apache-tomcat-9.0.16.tar.gz /usr/local WORKDIR /usr/local RUN mv apache-tomcat-9.0.16 /usr/local/tomcat8 EXPOSE 8080 ENTRYPOINT ["/usr/local/tomcat8/bin/catalina.sh","run"]

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/cb21bace7d29368909aced018dc61c44.html