利用dockerfile编译安装httpd做一个镜像,要求使用alpine做基础镜像,大小在30mb左右

复制代码
 1 [root@localhost ~]# mkdir apache   #  创建一个apache目录
 2 [root@localhost ~]# ls
 3 anaconda-ks.cfg  apache  httpd  nginx  
 4 [root@localhost ~]# cd apache
 5 [root@localhost apache]# cp -r ../httpd/files .   # 把httpd下面files里的大小移过来
 6 [root@localhost apache]# ls
 7 files
 8 [root@localhost apache]# ls files/  
 9 apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.53.tar.gz  install.sh
10 
11 FROM alpine   # 镜像来之alpine
12 
13 LABEL MANTAINER "benbugaizheyang 122271071@qq.com"   # 作者信息
14 
15 ENV VERSION 2.4.53     #版本号设置变量
16 ENV PATH /usr/local/apache/bin:$PATH  # 环境变量
17 
18 EXPOSE 80 443 #  暴露端口号
19 
20 ADD files/apr-1.7.0.tar.gz /tmp/    #没有rc目录所以放到tmp目录
21 ADD files/apr-util-1.6.1.tar.gz /tmp/ #  用ADD会自动解压
22 ADD files/httpd-${VERSION}.tar.gz /tmp/  # 版本号设置变量
23 
24 RUN adduser -SHs /sbin/nologin apache && \   #  创建用户
25        sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories && \   #  把国外源换成阿里源
26        apk add --no-cache -U openssl-dev pcre-dev expat-dev libtool  gcc libc-dev make && \   #  更新缓存安装依赖包,注意有好多换名字了
27        cd /tmp/apr-1.7.0 && \
28        sed -i '/$RM "$cfgfile"/d' configure && \
29        ./configure --prefix=/usr/local/apr && \
30        make && make install && \
31        cd ../apr-util-1.6.1 && \
32     ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \
33     make && make install && \
34     cd ../httpd-${VERSION} && \
35     ./configure --prefix=/usr/local/apache \
36         --enable-so \
37         --enable-ssl \
38         --enable-cgi \
39         --enable-rewrite \
40         --with-zlib \
41         --with-pcre \
42         --with-apr=/usr/local/apr \
43         --with-apr-util=/usr/local/apr-util/ \
44         --enable-modules=most \
45         --enable-mpms-shared=all \
46         --with-mpm=prefork && \
47     make && make install 
48     rm -rf /tmp/*   #   收尾
49 
50 WORKDIR /usr/local/apache    #  工作目录
51 CMD ["-D","FOREGOUND"]   #  怎么启动
52 WORKDIR /usr/local/apache   # 用说明启动
53     #  保存
54 [root@localhost apache]# docker build -t httpd:alpinev-1 . # 没有收尾的情况下做一个镜像
55 [root@localhost apache]# docker build -t benbugaizheyang/httpd:alpine . #  收尾之后在做一个
56 [root@localhost apache]# docker images
57 REPOSITORY                TAG         IMAGE ID       CREATED          SIZE
58 benbugaizheyang/httpd     alpine      0831aabfaf27   2 minutes ago    234MB
59 httpd                     alpinev-1   237be52f8e69   21 minutes ago   292MB
60 benbugaizheyang/myhttpd   v0.2        625baaedc612   24 hours ago     379MB
61 myhttpd                   latest      625baaedc612   24 hours ago     379MB
62 benbugaizheyang/myhttpd   v0.1        9537fee87046   26 hours ago     411MB
63 httpd                     v0.2        9537fee87046   26 hours ago     411MB
64 httpd                     v0.1        dee2e907c0ec   26 hours ago     706MB
65 alpine                    latest      c059bfaa849c   5 months ago     5.59MB
66 centos                    latest      5d0da3dc9764   7 months ago     231MB
67 
68 [root@localhost apache]# docker login
69 Authenticating with existing credentials...
70 WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
71 Configure a credential helper to remove this warning. See
72 https://docs.docker.com/engine/reference/commandline/login/#credentials-store
73 
74 Login Succeeded
75 [root@localhost apache]# docker benbugaizheyang/httpd:alpine
76 docker: 'benbugaizheyang/httpd:alpine' is not a docker command.
77 See 'docker --help'
78 [root@localhost apache]# docker push benbugaizheyang/httpd:alpine
79 The push refers to repository [docker.io/benbugaizheyang/httpd]
80 21cc59de3287: Pushed 
81 283cac654787: Pushed 
82 a9281c01c0f0: Pushed 
83 68f6d0f6ff49: Pushed 
84 8d3ac3489996: Mounted from library/alpine 
85 alpine: digest: sha256:eaed5597a5c62319213acb891256efd81ae201fda595fdcd5c3480cdb8cb8bc3 size: 1372   #   上传仓库
复制代码

 

 

 使用脚本制作

复制代码
[root@localhost apache]# vim Dockerfile 
FROM alpine

LABEL MANTAINER "benbugaizheyang 122271071@qq.com"

ENV VERSION 2.4.53
ENV PATH /usr/local/apache/bin:$PATH

EXPOSE 80 443

ADD files/apr-1.7.0.tar.gz /tmp/
ADD files/apr-util-1.6.1.tar.gz /tmp/
ADD files/httpd-${VERSION}.tar.gz /tmp/

RUN adduser -SHs /sbin/nologin apache && \
    sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories && \
    apk add --no-cache -U openssl-dev pcre-dev expat-dev libtool gcc libc-dev make && \
    cd /tmp/apr-1.7.0 && \
    sed -i '/$RM "$cfgfile"/d' configure && \
    ./configure --prefix=/usr/local/apr && \
    make && make install && \
    cd ../apr-util-1.6.1 && \
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \
    make && make install && \
    cd ../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 && \
    apk del --no-cache -U gcc libc-dev make && \  # 删除工具包
    rm -rf /tmp/*

WORKDIR /usr/local/apache
CMD ["-D","FOREGOUND"]
ENTRYPOINT ["/usr/local/apache/bin/httpd"]
WORKDIR /usr/local/apache

[root@localhost apache]# \cp Dockerfile files/install.sh   #  复制D 到f/i里去,\覆盖一下 
[root@localhost apache]# vim files/install.sh   # 写脚本
#!/bin/sh
 
adduser -SHs /sbin/nologin apache && \
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories && \
apk add --no-cache -U openssl-dev pcre-dev expat-dev libtool gcc libc-dev make && \
cd /tmp/apr-1.7.0 && \
sed -i '/$RM "$cfgfile"/d' configure && \
./configure --prefix=/usr/local/apr && \
make && make install && \
cd ../apr-util-1.6.1 && \
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \
make && make install && \
cd ../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 && \
apk del --no-cache -U gcc libc-dev make && \
rm -rf /tmp/*   #  修改如上
[root@localhost apache]# vim Dockerfile  #   修改如下

FROM alpine
LABEL MANTAINER "benbugaizheyang 122271071@qq.com"
ENV VERSION 2.4.53
ENV PATH /usr/local/apache/bin:$PATH
EXPOSE 80 443
ADD files/apr-1.7.0.tar.gz /tmp/
ADD files/apr-util-1.6.1.tar.gz /tmp/
ADD files/httpd-${VERSION}.tar.gz /tmp/
ADD files/install.sh /tmp/
RUN /bin/sh /tmp/install.sh
WORKDIR /usr/local/apache
CMD ["-D","FOREGOUND"]
ENTRYPOINT ["/usr/local/apache/bin/httpd"]
[root@localhost apache]# docker build -t benbugaizheyang/httpd-alpine:latest .  #  脚本制作镜像
[root@localhost apache]# docker images
REPOSITORY                     TAG         IMAGE ID       CREATED             SIZE
benbugaizheyang/httpd-alpine   latest      cb5cd0cea5bb   9 minutes ago       112MB  #  112mb
benbugaizheyang/httpd          alpine      0831aabfaf27   About an hour ago   234MB
[root@localhost apache]# docker push benbugaizheyang/httpd-alpine   #  上传镜像
复制代码

 

posted @   孙一鸣  阅读(267)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示