定制带有keepalived的Nginx镜像

作者:zhangyunlong 发布时间: 2024-05-10 阅读量:2 评论数:0

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"]

评论