Dockerfile编译httpd做镜像
目录结构
[root@localhost ~]# mkdir httpd
[root@localhost ~]# cd httpd
[root@localhost httpd]# mkdir files #把安装httpd所需的包放在这里
[root@localhost ~]# mv apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.53.tar.gz httpd/files/
[root@localhost httpd]# ls files/
apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.53.tar.gz
[root@localhost httpd]# touch Dockerfile
Dockerfile编写
[root@localhost httpd]# vim Dockerfile
[root@localhost httpd]# cat Dockerfile
FROM centos
LABEL MAINTAINER "tkl 2670178039@qq.com"
ENV apr_version=1.7.0 apr_util_version=1.6.1 httpd_version=2.4.53
ENV PATH=/usr/local/apache/bin:$PATH
EXPOSE 80 443
ADD files/* /usr/src/
ADD files/install.sh /tmp/ #将脚本从本地的files目录传到容器内的/tmp目录下
RUN /bin/bash /tmp/install.sh #执行脚本
WORKDIR /usr/local/apache
CMD ["-D","FOREGROUND"]
ENTRYPOINT ["/usr/local/apache/bin/httpd"]
[root@localhost httpd]#
install.sh
脚本的内容
[root@localhost httpd]# cat files/install.sh
#!/bin/bash
rm -rf /etc/yum.repos.d/* && \
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && \
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo && \
dnf clean all && \
dnf -y install make gcc gcc-c++ openssl-devel pcre-devel expat-devel libtool && \
useradd -r -M -s /sbin/nologin apache && \
cd /usr/src/apr-${apr_version} && \
sed -i '/$RM "$cfgfile"/d' configure && \
./configure --prefix=/usr/local/apr && make && make install && \
cd /usr/src/apr-util-${apr_util_version} && \
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \
make && make install && \
cd /usr/src/httpd-${httpd_version} && \
./configure --prefix=/usr/local/apache \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork && \
make && make install && \
dnf -y remove gcc gcc-c++ make && \
rm -rf /var/log/* /var/cache/* /usr/src/* /tmp/*
[root@localhost httpd]#
创建镜像
[root@localhost httpd]# docker build -t myhttpd:v0.3 .
[root@localhost httpd]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myhttpd v0.3 d358863cc3c5 7 minutes ago 411MB
myhttpd latest 9aa7bfdf858b 21 minutes ago 411MB
httpd v0.2 3703731824e2 51 minutes ago 411MB
httpd v0.1 4b4481da6c8c About an hour ago 706MB
开启一个容器测试
[root@localhost httpd]# docker run -d --name myweb0.1 myhttpd:v0.3
fc8c6758b6d71989c5514e96bcd0259e0aa38986660998d93c2d6ccfe79ea445
[root@localhost httpd]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc8c6758b6d7 myhttpd:v0.3 "/usr/local/apache/b…" 48 seconds ago Up 47 seconds 80/tcp, 443/tcp myweb0.1
e7b65e1d1e53 myhttpd "/usr/local/apache/b…" 21 minutes ago Up 21 minutes 80/tcp, 443/tcp myweb
341005ab1de5 httpd:v0.1 "/usr/local/apache/b…" About an hour ago Up About an hour 80/tcp, 443/tcp web
b371a60293eb centos "/bin/bash" 3 hours ago Up 3 hours interesting_napier
[root@localhost httpd]# curl 172.17.0.5
<html><body><h1>It works!</h1></body></html>
[root@localhost httpd]#
上传镜像到docker.hub仓库
#登录账号
[root@localhost ~]# docker login
#修改镜像名
[root@localhost httpd]# docker tag myhttpd:v0.3 tkl9639/httpd:latest
#上传镜像到docker.hub仓库
[root@localhost httpd]# docker push tkl9639/httpd:latest
tpd:v0.3 tkl9639/httpd:latest
#上传镜像到docker.hub仓库
[root@localhost httpd]# docker push tkl9639/httpd:latest
``