chore: 迁移配置文件和环境脚本到local目录
将docker-compose.yml、Dockerfile、init.sql、docker_password.txt、app.conf和init_env.sh等配置文件从FreetalkClubDev目录迁移到local目录,以便统一管理和维护
This commit is contained in:
1 parent
10dc22ea8a
commit
0cc9f16bd8
6 files changed
No files matched your search
@@ -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/*
|
||||
@@ -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";
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
!Ybw324!!Ybw324!
|
||||
@@ -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;
|
||||
@@ -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."
|
||||
Reference in new issue
Block a user