利用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 # 上传镜像
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本