Skip to content
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容器的容器名,替换成自己的,搞定!

Webos 官方文档