Dockerfile编译httpd做镜像

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

``

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值