1. 修改更新脚本的逻辑,现在在启动容器时才写入crontab表,并且允许用户自己定义更新时间,成功更新脚本后才会重启IYUU主程序;2. 增加使用github action构建镜像,并且可以同步构建linux/386,linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6,linux/s390x这7个平台的镜像。

This commit is contained in:
anonymous 2021-09-04 17:15:12 +08:00
parent c55608956c
commit 9f158d44b3
9 changed files with 90 additions and 145 deletions

57
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,57 @@
name: 构建IYUUPlus镜像
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
name: 构建IYUUPlus
env:
IMAGE_NAME: iyuuplus
steps:
-
name: Checkout
uses: actions/checkout@master
-
name: Set Up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set Up Buildx
uses: docker/setup-buildx-action@v1
-
name: Login DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
-
name: Set Up Cache
uses: actions/cache@v2
id: buildx-cache
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx
-
name: Buildx
uses: docker/build-push-action@v2
with:
context: .
file: docker/Dockerfile
platforms: linux/386,linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6,linux/s390x
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest
-
name: Update DockerHub Description
uses: christian-korneck/update-container-description-action@v1
env:
DOCKER_USER: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_PASS: ${{ secrets.DOCKERHUB_PASSWORD }}
with:
destination_container_repo: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}
provider: dockerhub
readme_file: ./readme.md

View File

@ -1,125 +0,0 @@
FROM alpine:latest
#FROM alpine:3.12
#FROM alpine:3.8
#FROM swoft/alphp:base
#FROM swoft/alphp:cli
LABEL maintainer="david <367013672@qq.com>" version="1.0"
##
# ---------- env settings ----------
##
# --build-arg timezone=Asia/Shanghai
ARG timezone
# prod pre test dev
ARG app_env=prod
# default use www-data user
# ARG add_user=www-data
ENV APP_ENV=${app_env:-"prod"} \
TIMEZONE=${timezone:-"Asia/Shanghai"} \
cron="3 */10 * * *"
##
# ---------- building ----------
##
RUN set -ex \
# change apk source repo
#&& sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/' /etc/apk/repositories \
#&& sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories \
&& apk update \
&& apk add --no-cache \
# Install base packages ('ca-certificates' will install 'nghttp2-libs')
ca-certificates \
curl \
tar \
# xz \
libressl \
# openssh \
openssl \
wget \
zip \
unzip \
git \
tzdata \
pcre \
# install php7 and some extensions
php7 \
# php7-common \
# php7-bcmath \
php7-curl \
# php7-ctype \
php7-dom \
# php7-fileinfo \
# php7-gettext \
# php7-gd \
# php7-iconv \
# php7-imagick \
php7-json \
php7-mbstring \
#php7-mongodb \
# php7-mysqlnd \
php7-openssl \
php7-opcache \
php7-pdo \
# php7-pdo_mysql \
php7-pdo_sqlite \
php7-phar \
php7-pcntl \
php7-posix \
# php7-redis \
php7-simplexml \
php7-sockets \
# php7-sodium \
php7-session \
# php7-sysvshm \
# php7-sysvmsg \
# php7-sysvsem \
# php7-tokenizer \
php7-zip \
php7-zlib \
php7-xml \
# && git clone https://github.com/ledccn/IYUUPlus.git /IYUU \
&& git clone https://gitee.com/ledc/iyuuplus.git /IYUU \
&& cd /IYUU && php -r "file_exists('.env') || copy('.env.example', '.env');" \
&& apk del --purge *-dev \
# install latest composer
&& wget https://getcomposer.org/composer.phar \
&& mv composer.phar /usr/local/bin/composer \
# make it executable
&& chmod +x /usr/local/bin/composer \
# ---------- some config,clear work ----------
&& cd /etc/php7 \
# - config PHP
&& { \
echo "upload_max_filesize=100M"; \
echo "post_max_size=108M"; \
echo "memory_limit=1024M"; \
echo "date.timezone=${TIMEZONE}"; \
} | tee conf.d/99-overrides.ini \
# - config timezone
&& ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
&& echo "${TIMEZONE}" > /etc/timezone \
&& crontab -l > /tmp/crontab.bak \
&& echo "$cron cd /IYUU && git fetch --all && git reset --hard origin/master" >> /tmp/crontab.bak \
&& echo '10 */12 * * * /usr/bin/php /IYUU/start.php restart -d' >> /tmp/crontab.bak \
&& crontab /tmp/crontab.bak \
# ---------- some config work ----------
# - ensure 'www-data' user exists(82 is the standard uid/gid for "www-data" in Alpine)
# && addgroup -g 82 -S ${add_user} \
# && adduser -u 82 -D -S -G ${add_user} ${add_user} \
# # - create user dir
# && mkdir -p /data \
# && chown -R ${add_user}:${add_user} /data \
&& rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/share/php7 \
&& cp /IYUU/docker/entrypoint.sh /entrypoint.sh \
&& chmod +x /entrypoint.sh \
&& echo -e "\033[42;37m Build Completed :).\033[0m\n"
EXPOSE 8787
VOLUME ["/IYUU/db", "/IYUU"]
WORKDIR /IYUU
ENTRYPOINT ["/entrypoint.sh"]
# CMD /run.sh

View File

@ -1,6 +1,8 @@
# FROM arm64v8/alpine
# FROM arm64v8/alpine:latest
FROM arm64v8/alpine:3.12
FROM alpine:latest
#FROM alpine:3.12
#FROM alpine:3.8
#FROM swoft/alphp:base
#FROM swoft/alphp:cli
LABEL maintainer="david <367013672@qq.com>" version="1.0"
@ -16,8 +18,7 @@ ARG app_env=prod
# ARG add_user=www-data
ENV APP_ENV=${app_env:-"prod"} \
TIMEZONE=${timezone:-"Asia/Shanghai"} \
cron="10 */10 * * *"
TIMEZONE=${timezone:-"Asia/Shanghai"}
##
# ---------- building ----------
@ -100,10 +101,6 @@ RUN set -ex \
# - config timezone
&& ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
&& echo "${TIMEZONE}" > /etc/timezone \
&& crontab -l > /tmp/crontab.bak \
&& echo "$cron cd /IYUU && git fetch --all && git reset --hard origin/master" >> /tmp/crontab.bak \
&& echo '10 */12 * * * /usr/bin/php /IYUU/start.php restart -d' >> /tmp/crontab.bak \
&& crontab /tmp/crontab.bak \
# ---------- some config work ----------
# - ensure 'www-data' user exists(82 is the standard uid/gid for "www-data" in Alpine)
# && addgroup -g 82 -S ${add_user} \
@ -113,11 +110,9 @@ RUN set -ex \
# && chown -R ${add_user}:${add_user} /data \
&& rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/share/php7 \
&& cp /IYUU/docker/entrypoint.sh /entrypoint.sh \
&& chmod +x /entrypoint.sh \
&& echo -e "\033[42;37m Build Completed :).\033[0m\n"
EXPOSE 8787
VOLUME ["/IYUU/db", "/IYUU"]
WORKDIR /IYUU
ENTRYPOINT ["/entrypoint.sh"]
# CMD /run.sh

0
docker/AMD64/build.sh → docker/build.amd64.sh Normal file → Executable file
View File

0
docker/Arm64v8/build.sh → docker/build.arm64.sh Normal file → Executable file
View File

0
docker/Arm64v8/build.n1.sh → docker/build.n1.sh Normal file → Executable file
View File

36
docker/entrypoint.sh Normal file → Executable file
View File

@ -1,11 +1,29 @@
#!/bin/sh
set -e
envFile="/IYUU/.env"
if [ ! -f "$envFile" ]; then
#git clone https://github.com/ledccn/IYUUPlus.git /IYUU
git clone https://gitee.com/ledc/iyuuplus.git /IYUU
cd /IYUU && php -r "file_exists('.env') || copy('.env.example', '.env');"
cd /IYUU
if [[ ! -d /IYUU/.git ]]; then
#git clone https://github.com/ledccn/IYUUPlus.git /IYUU
git clone https://gitee.com/ledc/iyuuplus.git /IYUU
else
git fetch --all
git reset --hard origin/master
git pull
fi
cd /IYUU && git fetch --all && git reset --hard origin/master
/usr/bin/php /IYUU/start.php start -d
/usr/sbin/crond -f
if [ ! -s .env ]; then
cp .env.example .env
fi
if [[ -z ${CRON_UPDATE} ]]; then
CRON_UPDATE="23 3-23/6 * * *"
fi
echo "设置cron..."
echo "${CRON_UPDATE} cd /IYUU && git fetch --all && git reset --hard origin/master && git pull && php start.php restart -d" | crontab -
echo "当前crontab如下"
crontab -l
php /IYUU/start.php start -d
crond -f

0
docker/example.sh Normal file → Executable file
View File

0
docker/Arm64v8/push.sh → docker/push.sh Normal file → Executable file
View File