基于CentOS8创建Apache服务镜像

一、构建过程中遇到的问题

    1. 容器运行时报错

AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 172.17.0.4. Set the ‘ServerName’ directive globally to suppress this message

解决方案:需要在Dockerfile文件中暴露端口80或者将apache配置文件的#ServerName www.example.com:80注释取消

EXPOSE 80
或者
RUN sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/g' /etc/httpd/conf/httpd.conf
    1. 构建过程中yum下载Apache服务错误

Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist

问题原因是:2020 年 12 月 8 号,CentOS 官方宣布了停止维护 CentOS Linux 的计划,并推出了 CentOS Stream 项目,CentOS Linux 8 作为 RHEL 8 的复刻版本,生命周期缩短,于 2021 年 12 月 31 日停止更新并停止维护(EOL),更多的信息可以查看 CentOS 官方公告。如果需要更新 CentOS,需要将镜像从 mirror.centos.org 更改为 vault.centos.org
解决方案:在Dockerfile中构建时修改镜像源

RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum clean all && yum makecache
    1. 由于Dockerfile文件中最后CMD命令错误导致容器起不来

具体Dockerfile关于CMD命令的说明请参考

二、构建过程

具体Dockerfile文件:

FROM centos
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum clean all && yum makecache
RUN yum -y install httpd
EXPOSE 80
# RUN sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/g' /etc/httpd/conf/httpd.conf
ADD news.tar.gz /var/www/html/
RUN mv /var/www/html/news/* /var/www/html/
COPY start.sh /start.sh
RUN chmod 775 /start.sh
CMD ["sh","-c","/start.sh"]

start.sh文件:

#/bin/bash
/usr/sbin/httpd -D FOREGROUND

这里必须使用http指令启动,systemctl在container中是不允许使用的。并且加入参数-D FOREGROUND保持apache运行在前台,因为Docker容器仅在它的1号进程(PID为1)运行时,会保持运行。如果1号进程退出了,Docker容器也就退出了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值