CMD+ENTRYPOINT实战
一、前提:
1、编译安装 httpd
$ yum -y install openssl openssl-devel zlib zlib-devel pcre-devel
$ cp -r /root/apr-1.4.6 /root/httpd-2.4.7/srclib/apr
$ cp -r /root/apr-util-1.4.1 /root/httpd-2.4.7/srclib/apr-util
$ ./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so --enable-headers --enable-expires --with-mpm=worker --enable-modules=most --enable-deflate --enable-ssl
2、源码编译安装 nginx
yum -y install pcre pcre-devel zlib zlib-devel
useradd nginx && cd /root/nginx-1.13.8 && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
二、编写Dockerfile文件
FROM centos:centos7.9.2009
MAINTAINER yq "yq@yq.com"
LABEL version="1.0"
LABEL nginx-version="1.13.8"
LABEL http-version="2.4.7"
RUN cd /etc/yum.repos.d/ && mkdir back && mv *.repo back/ && curl http://mirrors.163.com/.help/CentOS7-Base-163.repo > 163.repo
WORKDIR /root/
RUN yum -y install gcc gcc-c++ openssl openssl-devel pcre pcre-devel zlib zlib-devel make
ADD ./*.tar.gz /root/
RUN cp -a apr-1.4.6 /root/httpd-2.4.7/srclib/apr && cp -a apr-util-1.4.1 /root/httpd-2.4.7/srclib/apr-util && cd /root/httpd-2.4.7/ && ./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so --enable-headers --enable-expires --with-mpm=worker --enable-modules=most --enable-deflate --enable-ssl && make && make install
RUN useradd nginx && cd /root/nginx-1.13.8 && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
ADD ./startup.sh /root/
RUN chmod a+x /root/startup.sh
CMD ["nginx"]
ENTRYPOINT ["/root/startup.sh"]
三、编写启动脚本:startup.sh
#!/bin/bash
function nginx {
/usr/local/nginx/sbin/nginx
touch /usr/local/nginx/logs/access.log
tail -f /usr/local/nginx/logs/access.log
}
function httpd {
/usr/local/apache2/bin/apachectl start
touch /usr/local/apache2/logs/access_log
tail -f /usr/local/apache2/logs/access_log
}
$1
四:上传需要的压缩包

五,制作镜像
$ docker build -t nginx:v1 .
六、不同参数启动容器,浏览器进行测试
1)启动nginx容器
启动时,不加参数,默认启动nginx
$ docker run --name nginx -d -p 80:80 nginx:v1
浏览器测试:

2)启动httpd容器
启动时,加入httpd参数,启动httpd
$ docker run --name httpd -d -p 8080:80 nginx:v1 httpd
浏览器测试:
