菜单
本页目录

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

四:上传需要的压缩包

image-20221230230859246

五,制作镜像

$ docker build -t nginx:v1 .

六、不同参数启动容器,浏览器进行测试

1)启动nginx容器

​ 启动时,不加参数,默认启动nginx

$ docker run --name nginx -d -p 80:80 nginx:v1

浏览器测试:

image-20221230231917250

2)启动httpd容器

​ 启动时,加入httpd参数,启动httpd

$ docker run --name httpd -d -p 8080:80 nginx:v1 httpd

浏览器测试:

image-20221230232024965