基于CentOS8创建Apache服务镜像-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一、构建过程中遇到的问题
-
- 容器运行时报错
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
-
- 构建过程中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
-
- 由于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容器也就退出了。
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |