黄宗银 3 years ago
parent
commit
c50e1a2c34
3 changed files with 95 additions and 0 deletions
  1. 40 0
      rainloop/Dockerfile
  2. 17 0
      rainloop/auto_update.bash
  3. 38 0
      rainloop/build.txt

+ 40 - 0
rainloop/Dockerfile

@@ -0,0 +1,40 @@
+# FROM php:7.3-fpm
+# FROM php:7.4-fpm
+FROM php:8.0-fpm
+
+RUN apt-get update
+
+RUN apt-get install -y \
+git unzip wget zip curl mlocate \
+libmcrypt-dev libicu-dev libpcre3-dev \
+build-essential chrpath libssl-dev \
+libxft-dev libfreetype6 libfreetype6-dev \
+libpng-dev libjpeg62-turbo-dev \
+libfontconfig1 libfontconfig1-dev libzip-dev
+
+RUN pecl install mcrypt && \
+docker-php-ext-enable mcrypt
+
+RUN docker-php-ext-configure intl && \
+docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ && \
+docker-php-ext-install opcache pdo_mysql zip intl gd
+
+RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
+
+RUN curl --location --output /usr/local/bin/phpunit https://phar.phpunit.de/phpunit.phar && chmod +x /usr/local/bin/phpunit
+
+RUN apt-get -y autoremove && apt-get clean
+
+RUN sed -i '/^;catch_workers_output/ccatch_workers_output = yes' '/usr/local/etc/php-fpm.d/www.conf'
+
+RUN mkdir -p /app/
+
+COPY ./ /app/
+
+WORKDIR /app
+
+RUN sh auto_update.bash OnlyUpdate
+
+EXPOSE 9000
+
+CMD ["bash", "/app/auto_update.bash"]

+ 17 - 0
rainloop/auto_update.bash

@@ -0,0 +1,17 @@
+#!/bin/bash
+
+# 注意:不同shell对语法的支持有细微差别,第一行并不能随便写。
+
+# 自动更新为最新版本
+ftag_name=$(curl -ksSL https://api.github.com/repos/RainLoop/rainloop-webmail/releases/latest | jq -r '.tag_name')
+fName="/app/rainloop-${ftag_name}.zip"
+
+if [ ! -e "${fName}" ]; then
+	curl -o ${fName} -ksSL $(curl -ksSL https://api.github.com/repos/RainLoop/rainloop-webmail/releases/latest | jq -r '.assets[0].browser_download_url')
+	rm -rf /var/www/rainloop
+	rm -f /var/www/index.php
+	unzip -n -d /var/www/ ${fName}
+	chmod -R 777 /var/www/rainloop
+fi
+
+if [[ "${1}"x != "OnlyUpdate"x ]]; then php-fpm; fi

+ 38 - 0
rainloop/build.txt

@@ -0,0 +1,38 @@
+#git clone https://gogs.tods.gq/ApqTeam/DockerImg
+
+cd DockerImg/rainloop/
+
+
+### 创建构建实例
+
+# 如果已存在,可以先删除
+docker buildx ls
+docker buildx rm build -f
+
+docker buildx create --use --name build --node build --driver docker-container --driver-opt network=host
+
+### end 创建构建实例
+
+
+### 构建并推送
+
+docker buildx build --platform linux/amd64,linux/arm64 -t amwpfiqvy/rainloop . --push
+
+### end 构建并推送
+
+-- 以下为按架构分别构建 ----------------------------------------------------------------
+
+# amd64上构建并推送
+docker build -t amwpfiqvy/rainloop:amd64 .
+docker push amwpfiqvy/rainloop:amd64
+
+# arm64上构建并推送
+docker build -t amwpfiqvy/rainloop:arm64 .
+docker push amwpfiqvy/rainloop:arm64
+
+# 任意机器上构建latest标签并推送
+docker manifest create amwpfiqvy/rainloop \
+    amwpfiqvy/rainloop:amd64 \
+    amwpfiqvy/rainloop:arm64
+
+docker manifest push amwpfiqvy/rainloop