chore: 迁移配置文件和环境脚本到local目录

将docker-compose.yml、Dockerfile、init.sql、docker_password.txt、app.conf和init_env.sh等配置文件从FreetalkClubDev目录迁移到local目录,以便统一管理和维护
This commit is contained in:
Kenny Yang committed 2025-05-17 20:06:14 +08:00
1 parent 10dc22ea8a
commit 0cc9f16bd8
6 files changed

No files matched your search

+77
View File
@@ -0,0 +1,77 @@
# 设置 PHP 版本作为构建参数
ARG PHP_VERSION
FROM php:${PHP_VERSION}-fpm
# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive
# 更新包管理器并安装必要的依赖
RUN apt-get update && apt upgrade -y && apt-get install -y \
unzip \
libbz2-dev \
libmemcached-dev \
zlib1g-dev \
libldap2-dev \
libpng-dev \
libpq-dev \
libjpeg-dev \
libjpeg62-turbo-dev \
libwebp-dev \
libxpm-dev \
libvpx-dev \
libfreetype6-dev \
libxml2-dev \
libicu-dev \
git \
curl \
&& apt install -y \
libmariadb-dev-compat \
libmariadb-dev \
libzip-dev \
libmagickwand-dev \
imagemagick \
libmcrypt-dev \
libmcrypt4 \
libssl-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp --with-xpm \
&& docker-php-ext-install -j$(nproc) gd pdo pdo_mysql mysqli zip intl exif ldap bcmath opcache bz2 gettext sockets \
&& docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \
&& docker-php-ext-install -j$(nproc) ldap \
&& pecl install imagick memcached redis \
&& docker-php-ext-enable imagick memcached redis
# 安装 mcrypt 扩展
RUN if [ "${PHP_VERSION}" = "8.2" ]; then \
pecl install mcrypt-1.0.7 && docker-php-ext-enable mcrypt; \
elif [ "${PHP_VERSION}" = "7.4" ]; then \
pecl install mcrypt-1.0.4 && docker-php-ext-enable mcrypt; \
fi
# 安装 swoole 扩展
RUN if [ "${PHP_VERSION}" = "8.2" ]; then \
pecl install swoole && docker-php-ext-enable swoole; \
elif [ "${PHP_VERSION}" = "7.4" ]; then \
pecl install swoole-4.8.11 && docker-php-ext-enable swoole; \
fi
# 安装 SourceGuardian 扩展
RUN if [ "${PHP_VERSION}" = "8.2" ]; then \
curl -L -o /tmp/loaders.linux-x86_64.tar.gz https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz \
&& tar -zxvf /tmp/loaders.linux-x86_64.tar.gz -C /tmp/ \
&& cp /tmp/ixed.8.2.lin /usr/local/lib/php/extensions/no-debug-non-zts-20220829/ \
&& echo "zend_extension=ixed.8.2.lin" > /usr/local/etc/php/conf.d/sourceguardian.ini \
&& rm -rf /tmp/loaders.linux-x86_64.tar.gz; \
elif [ "${PHP_VERSION}" = "7.4" ]; then \
curl -L -o /tmp/loaders.linux-x86_64.tar.gz https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz \
&& tar -zxvf /tmp/loaders.linux-x86_64.tar.gz -C /tmp/ \
&& cp /tmp/ixed.7.4.lin /usr/local/lib/php/extensions/no-debug-non-zts-20190902/ \
&& echo "zend_extension=ixed.7.4.lin" > /usr/local/etc/php/conf.d/sourceguardian.ini \
&& rm -rf /tmp/loaders.linux-x86_64.tar.gz; \
fi
# 配置 PHP 上传限制和内存限制
RUN echo "upload_max_filesize=80M\n post_max_size=100M" > /usr/local/etc/php/conf.d/uploads.ini \
&& echo "memory_limit=256M" > /usr/local/etc/php/conf.d/memory.ini
# 清理包缓存和临时文件
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
+24
View File
@@ -0,0 +1,24 @@
server {
listen "${listen_port}";
server_name "${internal_server_ip}";
root /var/www/html/"${app_name}";
index index.php;
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffers 16 16k;
fastcgi_busy_buffers_size 64k;
fastcgi_buffer_size 32k;
fastcgi_keep_conn on;
fastcgi_cache my_cache;
fastcgi_cache_key "$scheme$request_method$host$request_uri$arg_id";
}
}
+106
View File
@@ -0,0 +1,106 @@
networks:
dev_network:
driver: bridge
services:
nginx:
image: nginx:latest
container_name: nginx
restart: always
ports:
- 5080:80
- 5443:443
- 5300:5300
- 5301:5301
- 5302:5302
- 5303:5303
- 5304:5304
- 5305:5305
- 5306:5306
- 5307:5307
- 5308:5308
- 5309:5309
- 5310:5310
volumes:
- ./conf.d:/etc/nginx/conf.d
- ./nginx.conf:/etc/nginx/nginx.conf
- ./certs:/etc/nginx/certs
- ./html:/var/www/html
networks:
- dev_network
php:
build:
context: .
dockerfile: Dockerfile
args:
PHP_VERSION: "8.2"
container_name: php
restart: always
volumes:
- ./html:/var/www/html
networks:
- dev_network
php74:
build:
context: .
dockerfile: Dockerfile
args:
PHP_VERSION: "7.4"
container_name: php74
volumes:
- ./html:/var/www/html
networks:
- dev_network
mysql:
image: mysql:8.0.23
container_name: mysql
restart: always
ports:
- 3306:3306
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf.d:/etc/mysql/conf.d/
- ./mysql/log:/var/log/mysql
- ./mysql/conf.d/init.sql:/docker-entrypoint-initdb.d/init.sql
- /etc/localtime:/etc/localtime:ro
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_USER=kennyyang
- MYSQL_PASSWORD="!Ybw324!"
networks:
- dev_network
redis:
image: redis:latest
container_name: redis
restart: always
environment:
- REDIS_PASSWORD="!Ybw324!"
- REDIS_ALLOW_REMOTE_CONNECTIONS=yes
ports:
- 6379:6379
volumes:
- ./redis:/data
- ./redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./redis/logs:/logs
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
networks:
- dev_network
postgres:
image: postgres:14
container_name: postgresql
restart: always
environment:
POSTGRES_USER: kennyyang
POSTGRES_PASSWORD: "!Ybw324!"
ALLOW_IP_RANGE: "0.0.0.0/0"
ports:
- "5432:5432"
volumes:
- ./postgresql:/var/lib/postgresql
networks:
- dev_network
+1
View File
@@ -0,0 +1 @@
!Ybw324!!Ybw324!
+6
View File
@@ -0,0 +1,6 @@
GRANT ALL PRIVILEGES ON *.* TO 'kennyyang'@'%';
USE mysql;
ALTER USER 'kennyyang'@'%' IDENTIFIED WITH mysql_native_password BY '!Ybw324!';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '!Ybw324!' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '!Ybw324!' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
+82
View File
@@ -0,0 +1,82 @@
#!/bin/bash
# 更新国内镜像源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup # 备份原有的 sources.list 文件
sudo cat > /etc/apt/sources.list <<EOF
deb https://mirrors.aliyun.com/debian/ bookworm main non-free non-free-firmware contrib
deb-src https://mirrors.aliyun.com/debian/ bookworm main non-free non-free-firmware contrib
deb https://mirrors.aliyun.com/debian-security/ bookworm-security main
deb-src https://mirrors.aliyun.com/debian-security/ bookworm-security main
deb https://mirrors.aliyun.com/debian/ bookworm-updates main non-free non-free-firmware contrib
deb-src https://mirrors.aliyun.com/debian/ bookworm-updates main non-free non-free-firmware contrib
deb https://mirrors.aliyun.com/debian/ bookworm-backports main non-free non-free-firmware contrib
deb-src https://mirrors.aliyun.com/debian/ bookworm-backports main non-free non-free-firmware contrib
EOF
# 更新系统并安装必要的第三方软件
apt update -y && apt upgrade -y && apt install -y curl wget sudo socat unzip tree
# 安装Docker和Docker Compose
curl -fsSL https://get.docker.com | sh
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 创建软件所需的目录结构
mkdir -p /home/web/html /home/web/certs /home/web/conf.d
mkdir -p /home/web/mysql/conf.d /home/web/mysql/data /home/web/mysql/log
mkdir -p /home/web/redis/conf /home/web/redis/data /home/web/redis/logs
mkdir -p /home/web/postgresql
# 创建默认证书文件
openssl req -x509 -nodes -newkey rsa:2048 -keyout /home/web/certs/default_server.key -out /home/web/certs/default_server.crt -days 5475 -subj "/C=US/ST=State/L=City/O=Organization/OU=Organizational Unit/CN=Common Name"
# 创建自动续签证书任务
# 切换到一个一致的目录(例如,家目录)
cd ~ || exit
# 下载并使脚本可执行
wget -O ~/.auto_cert_renewal.sh https://raw.githubusercontent.com/shakenny/standard-docker/main/auto_cert_renewal.sh
chmod +x ~/.auto_cert_renewal.sh
# 下载docker_password.txt
wget -O ~/docker_password https://raw.githubusercontent.com/shakenny/standard-docker/main/FreetalkClubDev/docker_password.txt
# 读取 Docker Hub 登录密码
DOCKER_PASSWORD=$(cat docker_password.txt)
# 登录 Docker Hub
echo "$DOCKER_PASSWORD" | docker login --username shakennyyang --password-stdin
# 设置定时任务字符串
cron_job="0 0 * * * ~/.auto_cert_renewal.sh"
# 检查是否存在相同的定时任务
existing_cron=$(crontab -l 2>/dev/null | grep -F "$cron_job")
# 如果不存在,则添加定时任务
if [ -z "$existing_cron" ]; then
(crontab -l 2>/dev/null; echo "$cron_job") | crontab -
echo "续签任务已添加"
else
echo "续签任务已存在,无需添加"
fi
# 下载配置文件
wget -O /home/web/nginx.conf https://raw.githubusercontent.com/shakenny/standard-docker/main/nginx.conf
wget -O /home/web/conf.d/default.conf https://raw.githubusercontent.com/shakenny/standard-docker/main/default.conf
wget -O /home/web/mysql/conf.d/my.cnf https://raw.githubusercontent.com/shakenny/standard-docker/main/my.cnf
wget -O /home/web/mysql/conf.d/init.sql https://raw.githubusercontent.com/shakenny/standard-docker/main/FreetalkClubDev/init.sql
wget -O /home/web/redis/conf/redis.conf https://raw.githubusercontent.com/redis/redis/7.2/redis.conf
# 修改Redis配置文件
sed -i "s/bind 127.0.0.1 -::1/bind 0.0.0.0/g" /home/web/redis/conf/redis.conf
sed -i "s/# requirepass foobared/requirepass \!Ybw324\!/g" /home/web/redis/conf/redis.conf
sed -i "s/appendonly no/appendonly yes/g" /home/web/redis/conf/redis.conf
# 下载Docker Compose文件和Dockerfile
wget -O /home/web/docker-compose.yml https://raw.githubusercontent.com/shakenny/standard-docker/main/FreetalkClubDev/docker-compose.yml
wget -O /home/web/Dockerfile https://raw.githubusercontent.com/shakenny/standard-docker/main/FreetalkClubDev/Dockerfile
echo "Initialization script completed successfully."