Dockerfile内容如下:
# 用于构建Nginx定制化镜像, 容器内自带keepalived保活
FROM nginx:1.25.1
# 安装keepalived
RUN apt-get update && apt-get install -y keepalived
# 创建nginx状态检查脚本
RUN echo "#!/bin/bash" > /etc/keepalived/check_nginx.sh \
&& echo "" >> /etc/keepalived/check_nginx.sh \
&& echo "NGINX_STATUS=\$(service nginx status 2>&1)" >> /etc/keepalived/check_nginx.sh \
&& echo "" >> /etc/keepalived/check_nginx.sh \
&& echo "if [ \$? -eq 0 ]; then" >> /etc/keepalived/check_nginx.sh \
&& echo " echo \"Nginx is running\"" >> /etc/keepalived/check_nginx.sh \
&& echo "else" >> /etc/keepalived/check_nginx.sh \
&& echo " echo \"Nginx is not running\"" >> /etc/keepalived/check_nginx.sh \
&& echo " service nginx start" >> /etc/keepalived/check_nginx.sh \
&& echo "fi" >> /etc/keepalived/check_nginx.sh \
&& echo "exit 0" >> /etc/keepalived/check_nginx.sh
# 检查脚本设置可执行权限
RUN chmod +x /etc/keepalived/check_nginx.sh
# 创建keepalived配置文件
RUN echo "vrrp_script chk_nginx {" > /etc/keepalived/keepalived.conf \
&& echo " script \"/etc/keepalived/check_nginx.sh\"" >> /etc/keepalived/keepalived.conf \
&& echo " interval 2" >> /etc/keepalived/keepalived.conf \
&& echo "}" >> /etc/keepalived/keepalived.conf \
&& echo "" >> /etc/keepalived/keepalived.conf \
&& echo "vrrp_instance VI_1 {" >> /etc/keepalived/keepalived.conf \
&& echo " interface eth0" >> /etc/keepalived/keepalived.conf \
&& echo " state BACKUP" >> /etc/keepalived/keepalived.conf \
&& echo " priority 100" >> /etc/keepalived/keepalived.conf \
&& echo " virtual_router_id 51" >> /etc/keepalived/keepalived.conf \
&& echo " advert_int 1" >> /etc/keepalived/keepalived.conf \
&& echo " authentication {" >> /etc/keepalived/keepalived.conf \
&& echo " auth_type PASS" >> /etc/keepalived/keepalived.conf \
&& echo " auth_pass your_password" >> /etc/keepalived/keepalived.conf \
&& echo " }" >> /etc/keepalived/keepalived.conf \
&& echo " track_script {" >> /etc/keepalived/keepalived.conf \
&& echo " chk_nginx" >> /etc/keepalived/keepalived.conf \
&& echo " }" >> /etc/keepalived/keepalived.conf \
&& echo "}" >> /etc/keepalived/keepalived.conf
CMD ["bash", "-c", "service keepalived start && while true; do sleep 3600; done"]