mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-01 15:32:48 +08:00
feat(stack): 新增 docker-dev 开发模式并自动清理文件
All checks were successful
build-and-deploy / 直传代码并部署到 Host15 (push) Successful in 1m13s
All checks were successful
build-and-deploy / 直传代码并部署到 Host15 (push) Successful in 1m13s
- 新增 docker-dev 部署模式,提供包含 nginx+php-fpm、MySQL、Redis、phpMyAdmin 和 Xdebug 的完整 Docker 开发环境 - 在 StackModeService 中重写 applyMode 方法,切换模式时自动删除目标模式中不存在的已管理文件 - 新增 .docker-dev.env 配置文件并纳入 managed_files 管理,切换模式时自动复制或删除
This commit is contained in:
37
source/stack/default/docker/run.sh
Normal file
37
source/stack/default/docker/run.sh
Normal file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 将代码中的nginx复制到nginx配置文件中
|
||||
cp /var/www/html/docker/nginx.conf /etc/nginx/sites-available/default
|
||||
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
|
||||
|
||||
# 将代码中的php配置文件复制到php配置文件中
|
||||
cp /var/www/html/docker/zz-phprun.ini /usr/local/etc/php/conf.d
|
||||
cp /var/www/html/docker/zz-phpfpm.conf /usr/local/etc/php-fpm.d
|
||||
|
||||
|
||||
# 设置目录权限,确保挂载卷后依然有效
|
||||
mkdir -p /var/www/html/runtime && chmod -R 777 /var/www/html/runtime
|
||||
mkdir -p /var/www/html/public/storage && chmod -R 777 /var/www/html/public/storage
|
||||
mkdir -p /var/www/html/public/build && chmod -R 777 /var/www/html/public/build
|
||||
mkdir -p /var/www/html/storage && chmod -R 777 /var/www/html/storage
|
||||
mkdir -p /var/www/html/memoryspace && chown -R www-data:www-data /var/www/html/memoryspace
|
||||
|
||||
|
||||
# 运行redis
|
||||
# nohup redis-server --requirepass "" &
|
||||
|
||||
# 输出参数
|
||||
echo "参数为:$@"
|
||||
|
||||
# TODO:增加自动批量运行并阻塞的脚本,比如:group default ,会调用auto.sh的default的部分,最终阻塞,auth.sh的default部分,可能会运行一系列的命令,比如清空缓存,踢人下线,重置密码
|
||||
|
||||
if [ "$1" = "server" ] || [ "$1" = "" ]; then
|
||||
# 运行定时任务 TODO:以指定用户运行
|
||||
su - www-data -c "nohup php /var/www/html/think timer --local --quit &"
|
||||
# 运行nginx
|
||||
service nginx start
|
||||
# 运行php-fpm
|
||||
php-fpm
|
||||
else
|
||||
php "/var/www/html/""$@"
|
||||
fi
|
||||
6
source/stack/docker-dev/.dockerignore
Normal file
6
source/stack/docker-dev/.dockerignore
Normal file
@@ -0,0 +1,6 @@
|
||||
.git
|
||||
.sisyphus
|
||||
node_modules
|
||||
runtime
|
||||
docker-dev
|
||||
*.sock
|
||||
@@ -63,20 +63,8 @@ RUN composer dump-autoload
|
||||
# RUN install-php-extensions @composer
|
||||
|
||||
# Dev mode PHP config (overrides zz-phprun.ini)
|
||||
RUN echo '; Dev mode PHP config (overrides zz-phprun.ini)' > /usr/local/etc/php/conf.d/zzz-dev.ini && \
|
||||
echo 'opcache.enable = 0' >> /usr/local/etc/php/conf.d/zzz-dev.ini && \
|
||||
echo 'opcache.jit_buffer_size = 0' >> /usr/local/etc/php/conf.d/zzz-dev.ini && \
|
||||
echo 'display_errors = On' >> /usr/local/etc/php/conf.d/zzz-dev.ini && \
|
||||
echo 'error_reporting = E_ALL' >> /usr/local/etc/php/conf.d/zzz-dev.ini
|
||||
|
||||
# Xdebug dev config
|
||||
RUN echo '; Xdebug dev config' > /usr/local/etc/php/conf.d/zzz-xdebug.ini && \
|
||||
echo 'xdebug.mode = debug,develop' >> /usr/local/etc/php/conf.d/zzz-xdebug.ini && \
|
||||
echo 'xdebug.start_with_request = trigger' >> /usr/local/etc/php/conf.d/zzz-xdebug.ini && \
|
||||
echo 'xdebug.client_host = host.docker.internal' >> /usr/local/etc/php/conf.d/zzz-xdebug.ini && \
|
||||
echo 'xdebug.client_port = 9003' >> /usr/local/etc/php/conf.d/zzz-xdebug.ini && \
|
||||
echo 'xdebug.discover_client_host = true' >> /usr/local/etc/php/conf.d/zzz-xdebug.ini && \
|
||||
echo 'xdebug.idekey = DOCKER_DEV' >> /usr/local/etc/php/conf.d/zzz-xdebug.ini
|
||||
COPY docker/zzz-dev.ini /usr/local/etc/php/conf.d/zzz-dev.ini
|
||||
COPY docker/zzz-xdebug.ini /usr/local/etc/php/conf.d/zzz-xdebug.ini
|
||||
|
||||
VOLUME /var/www/html/runtime
|
||||
VOLUME /var/www/html/public/storage
|
||||
|
||||
41
source/stack/docker-dev/docker/run.sh
Normal file
41
source/stack/docker-dev/docker/run.sh
Normal file
@@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 将代码中的nginx复制到nginx配置文件中
|
||||
cp /var/www/html/docker/nginx.conf /etc/nginx/sites-available/default
|
||||
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
|
||||
|
||||
# 将代码中的php配置文件复制到php配置文件中
|
||||
cp /var/www/html/docker/zz-phprun.ini /usr/local/etc/php/conf.d
|
||||
cp /var/www/html/docker/zz-phpfpm.conf /usr/local/etc/php-fpm.d
|
||||
|
||||
# 开发模式:覆盖生产PHP配置(Opcache、错误显示、Xdebug)
|
||||
cp /var/www/html/docker/zzz-dev.ini /usr/local/etc/php/conf.d
|
||||
cp /var/www/html/docker/zzz-xdebug.ini /usr/local/etc/php/conf.d
|
||||
|
||||
|
||||
# 设置目录权限,确保挂载卷后依然有效
|
||||
mkdir -p /var/www/html/runtime && chmod -R 777 /var/www/html/runtime
|
||||
mkdir -p /var/www/html/public/storage && chmod -R 777 /var/www/html/public/storage
|
||||
mkdir -p /var/www/html/public/build && chmod -R 777 /var/www/html/public/build
|
||||
mkdir -p /var/www/html/storage && chmod -R 777 /var/www/html/storage
|
||||
mkdir -p /var/www/html/memoryspace && chown -R www-data:www-data /var/www/html/memoryspace
|
||||
|
||||
|
||||
# 运行redis
|
||||
# nohup redis-server --requirepass "" &
|
||||
|
||||
# 输出参数
|
||||
echo "参数为:$@"
|
||||
|
||||
# TODO:增加自动批量运行并阻塞的脚本,比如:group default ,会调用auto.sh的default的部分,最终阻塞,auth.sh的default部分,可能会运行一系列的命令,比如清空缓存,踢人下线,重置密码
|
||||
|
||||
if [ "$1" = "server" ] || [ "$1" = "" ]; then
|
||||
# 运行定时任务 TODO:以指定用户运行
|
||||
su -www-data -c "nohup php /var/www/html/think timer --local --quit &"
|
||||
# 运行nginx
|
||||
service nginx start
|
||||
# 运行php-fpm
|
||||
php-fpm
|
||||
else
|
||||
php "/var/www/html/""$@"
|
||||
fi
|
||||
9
source/stack/docker-dev/docker/zzz-dev.ini
Normal file
9
source/stack/docker-dev/docker/zzz-dev.ini
Normal file
@@ -0,0 +1,9 @@
|
||||
; Dev mode PHP config (overrides zz-phprun.ini)
|
||||
opcache.enable = 1
|
||||
opcache.memory_consumption = 128
|
||||
opcache.validate_timestamps = 1
|
||||
opcache.revalidate_freq = 3
|
||||
opcache.interned_strings_buffer = 16
|
||||
opcache.max_accelerated_files = 20000
|
||||
display_errors = On
|
||||
error_reporting = E_ALL
|
||||
7
source/stack/docker-dev/docker/zzz-xdebug.ini
Normal file
7
source/stack/docker-dev/docker/zzz-xdebug.ini
Normal file
@@ -0,0 +1,7 @@
|
||||
; Xdebug dev config
|
||||
xdebug.mode = debug,develop
|
||||
xdebug.start_with_request = yes
|
||||
xdebug.client_host = host.docker.internal
|
||||
xdebug.client_port = 9003
|
||||
xdebug.discover_client_host = true
|
||||
xdebug.idekey = DOCKER_DEV
|
||||
@@ -4,7 +4,11 @@
|
||||
"Dockerfile",
|
||||
"docker-compose.yaml",
|
||||
".gitea/workflows/build-and-deploy.yml",
|
||||
".docker-dev.env"
|
||||
".docker-dev.env",
|
||||
".dockerignore",
|
||||
"docker/zzz-dev.ini",
|
||||
"docker/zzz-xdebug.ini",
|
||||
"docker/run.sh"
|
||||
],
|
||||
"modes": {
|
||||
"default": {
|
||||
|
||||
Reference in New Issue
Block a user