使用dockerfile制作apache编译安装镜像

本文档详细介绍了如何使用Dockerfile来创建一个Apache编译安装的镜像,包括创建目录结构,编写entrypoint.sh启动脚本,定义Dockerfile,测试运行容器以及将镜像推送到Dockerhub的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用dockerfile制作apache编译安装镜像

创建目录结构

[root@slave1 ~]# mkdir httpd
[root@slave1 httpd]# mkdir azb/
[root@slave1 httpd]# cd azb/
[root@slave1 azb]# ls
apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz

编写entrypoint.sh脚本

[root@slave1 httpd]# vim entrypoint.sh
#!bin/bash

sed -i '/^#ServerName/s/#//g' /usr/local/apache/conf/httpd.conf

exec "$@"
[root@slave1 httpd]# chmod +x entrypoint.sh 

编写dockerfile文件

[root@slave1 httpd]# vim Dockerfile 
FROM centos

LABEL MAINTAINER='cl 3042277527@qq.com'

ENV apache_version=2.4.54
ENV PATH /usr/local/apache/bin:$PATH

ADD azb/apr-1.7.0.tar.gz /usr/src/
ADD azb/apr-util-1.6.1.tar.gz /usr/src
ADD azb/httpd-${apache_version}.tar.gz /usr/src
ADD entrypoint.sh /

RUN rm -rf /etc/yum.repos.d/*  && \
    cd /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 && \
    yum clean all && yum makecache && \
    yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make && \
    cd /usr/src/apr-1.7.0 && \
    sed -i '/$RM "$cfgfile"/d' configure && \
    ./configure --prefix=/usr/local/apr && \
     make && make install && \
    cd && \
    cd /usr/src/apr-util-1.6.1 && \
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \
    make && make install && \
    cd && \
    cd /usr/src/httpd-${apache_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

EXPOSE 80

CMD ["/usr/local/apache/bin/httpd","-D","FOREGROUND"]

ENTRYPOINT ["/bin/bash","/entrypoint.sh"]

WORKDIR /usr/local/apache

//创建镜像
[root@slave1 ~]# podman build -t chenlang123/httpd:v0.2 httpd/
[root@slave1 ~]# podman images
REPOSITORY                         TAG         IMAGE ID      CREATED         SIZE
localhost/chenlang123/httpd        v0.2        d492d30212f9  35 seconds ago  705 MB

运行容器测试

[root@slave1 ~]# podman run -d -it --name web -p 80:80 localhost/chenlang123/httpd:v0.2
1363daa315025f49732503e9f85ddb644f62d48d4798e84ae8bbccc66958dd36
[root@slave1 ~]# podman ps -a 
CONTAINER ID  IMAGE                             COMMAND               CREATED        STATUS            PORTS               NAMES
1363daa31502  localhost/chenlang123/httpd:v0.2  /usr/local/apache...  9 seconds ago  Up 9 seconds ago  0.0.0.0:80->80/tcp  web

在这里插入图片描述

上传镜像到dockerhub

[root@slave1 ~]# podman tag d492d30212f9 docker.io/chenlang123/httpd:v0.3
[root@slave1 ~]# podman push docker.io/chenlang123/httpd:v0.3
Getting image source signatures
Copying blob 30f77fe5fa21 done  
Copying blob bda83f7d9a28 done  
Copying blob 3733aa023088 done  
Copying blob 313d1a56c9fe done  
Copying blob 186de0612c3c done  
Copying blob 2653d992f4ef done  
Copying config d492d30212 done  
Writing manifest to image destination
Storing signatures

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值