docker镜像回退
镜像回退
docker镜像回退
DANGER
该教程由 群内忠实Webos用户 @小火柴阿
提供
最近遇到这样一个问题,我部署webos的方式为docker,我使用的是docker-compose,在执行docker-compose down时候,会导致webos镜像回退,从而出现各种各样的问题,为此,以下办法供群友参考。
官方dockerfile
制作镜像针对于有基础的同学,可以直接使用官方提供的dockerfile文件
FROM openjdk:8-jre-alpine
ADD https://support.tenfell.cn/webos_update/php/index.php?type=8&m=1 /webos/webos.zip
RUN unzip /webos/webos.zip -d /webos/
RUN rm -rf /webos/webos.zip
EXPOSE 8088
WORKDIR /webos/api
CMD if [[ -n \"$sid\" ]] ; then wget \"https://ewebos.tenfell.cn/php/api.php?module=channel&action=down&id=$sid\" -O certificate.json ; fi ; sh restart.sh ; sleep 8088d" > "$DOCKERFILE_PATH
FROM openjdk:8-jre-alpine
ADD https://support.tenfell.cn/webos_update/php/index.php?type=8&m=1 /webos/webos.zip
RUN unzip /webos/webos.zip -d /webos/
RUN rm -rf /webos/webos.zip
EXPOSE 8088
WORKDIR /webos/api
CMD if [[ -n \"$sid\" ]] ; then wget \"https://ewebos.tenfell.cn/php/api.php?module=channel&action=down&id=$sid\" -O certificate.json ; fi ; sh restart.sh ; sleep 8088d" > "$DOCKERFILE_PATH
然后执行docker build -t webos:1.3.8 .
如果不熟悉docker的可以直接使用我提供的脚本文件
#!/bin/bash
# 获取当前日期作为版本号
VERSION=$(date +"%Y%m%d")
# Dockerfile 文件路径
DOCKERFILE_PATH=$(pwd)/Dockerfile
# 创建 Dockerfile 文件
echo "FROM openjdk:8-jre-alpine
ADD https://support.tenfell.cn/webos_update/php/index.php?type=8&m=1 /webos/webos.zip
RUN unzip /webos/webos.zip -d /webos/
RUN rm -rf /webos/webos.zip
EXPOSE 8088
WORKDIR /webos/api
CMD if [[ -n \"$sid\" ]] ; then wget \"https://ewebos.tenfell.cn/php/api.php?module=channel&action=down&id=$sid\" -O certificate.json ; fi ; sh restart.sh ; sleep 8088d" > "$DOCKERFILE_PATH"
# 构建 Docker 镜像
docker build -t webos:$VERSION .
# 输出信息
echo "镜像已经构建好,名称为 webos:$VERSION"
#!/bin/bash
# 获取当前日期作为版本号
VERSION=$(date +"%Y%m%d")
# Dockerfile 文件路径
DOCKERFILE_PATH=$(pwd)/Dockerfile
# 创建 Dockerfile 文件
echo "FROM openjdk:8-jre-alpine
ADD https://support.tenfell.cn/webos_update/php/index.php?type=8&m=1 /webos/webos.zip
RUN unzip /webos/webos.zip -d /webos/
RUN rm -rf /webos/webos.zip
EXPOSE 8088
WORKDIR /webos/api
CMD if [[ -n \"$sid\" ]] ; then wget \"https://ewebos.tenfell.cn/php/api.php?module=channel&action=down&id=$sid\" -O certificate.json ; fi ; sh restart.sh ; sleep 8088d" > "$DOCKERFILE_PATH"
# 构建 Docker 镜像
docker build -t webos:$VERSION .
# 输出信息
echo "镜像已经构建好,名称为 webos:$VERSION"
新建一个名为webos_build.sh文件,把代码复制进去,执行sh webos_build.sh既可。
官方同步镜像(测试版)
如果实在是小白同学,那直接拉取我制作的镜像
docker pull xiaohuochaia/webosbeta
docker pull xiaohuochaia/webosbeta
默认拉取最新版,该镜像为自己使用,所有制作全是以官方代码为基础,未做任何改动。
watchtowe自动更新
对于镜像的更新,当然容器也要随时跟着更新,这里我们用到watchtowe
docker run -d \
--name watchtower \
--privileged \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-e Asia/Shanghai \
-e WATCHTOWER_NOTIFICATIONS=email \
-e WATCHTOWER_NOTIFICATION_EMAIL_FROM=test@qq.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_TO=test@qq.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.qq.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465 \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=test@qq.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=123456 \
-e WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 \
containrrr/watchtower --interval 86400 \
webos
docker run -d \
--name watchtower \
--privileged \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-e Asia/Shanghai \
-e WATCHTOWER_NOTIFICATIONS=email \
-e WATCHTOWER_NOTIFICATION_EMAIL_FROM=test@qq.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_TO=test@qq.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.qq.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465 \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=test@qq.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=123456 \
-e WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 \
containrrr/watchtower --interval 86400 \
webos
这里注意替换test@qq.com为自己的邮件配置,这样在更新的时候会收到通知,美滋滋,最后的webos为你创建webos容器的容器名,替换成自己的,搞定!