新增docker用法和说明;

This commit is contained in:
2024-04-07 22:45:58 +08:00
parent c0b5880ae1
commit fc07f22253
4 changed files with 104 additions and 24 deletions

View File

@@ -1,8 +1,8 @@
# 基于官方 PHP 8.0 镜像
FROM php:8.0-fpm
# RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
# RUN sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update
@@ -10,7 +10,7 @@ RUN apt-get update
RUN apt-get install -y nginx
# 安装ffmpeg
RUN apt-get install -y ffmpeg
# RUN apt-get install -y ffmpeg
# 安装redis
RUN apt-get install -y redis-server
@@ -42,19 +42,29 @@ RUN rm /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
# 设置工作目录
WORKDIR /var/www/html
# 将当前目录下的文件拷贝到工作目录
COPY . /var/www/html
# 创建runtime目录
RUN mkdir /var/www/html/runtime
# 设置runtime目录权限为777
RUN mkdir -p /var/www/html/runtime
RUN chmod -R 777 /var/www/html/runtime
# 创建持久化存储目录
VOLUME /var/www/html/runtime
# 创建storage目录
RUN mkdir -p /var/www/html/public/storage
RUN chmod -R 777 /var/www/html/public/storage
VOLUME /var/www/html/public/storage
# 创建build目录
RUN mkdir -p /var/www/html/public/build
RUN chmod -R 777 /var/www/html/public/build
VOLUME /var/www/html/public/build
# 创建storagesafe目录
RUN mkdir -p /var/www/html/storage
RUN chmod -R 777 /var/www/html/storage
VOLUME /var/www/html/storage
# 暴露 Nginx 端口
EXPOSE 80
@@ -62,6 +72,7 @@ EXPOSE 80
RUN chmod +x /var/www/html/docker/run.sh
# 启动 Nginx PHP 然后阻塞
CMD /var/www/html/docker/run.sh
ENTRYPOINT ["/var/www/html/docker/run.sh"]
CMD ["server"]

View File

@@ -235,4 +235,67 @@ vscode中liveSassCompiler的配置:
```
### docker
内置了docker打包命令打包出的镜像支持两种调用方法
#### 打包镜像
下面给出的命令指定了标签名,可自行替换。
使用以下命令打包时,相同的名称不会覆盖,名称会被新的镜像占用,因此用第二行以时间为版本名的方式,调试起来更方面。
```
docker build -t ulthon/ulthon_admin:v1 .
docker build -t ulthon/ulthon_admin:202404071454 .
```
#### 运行镜像
下面的命令中为容器指定了名字,可自行替换。
相同名称不能重复运行所以指定名字是个好习惯否则docker会自动起名。
```
docker run -d \
-p 88:80 \
-v /data/ulthon_admin/runtime:/var/www/html/runtime \
-v /data/ulthon_admin/storage:/var/www/html/public/storage \
-v /data/ulthon_admin/build:/var/www/html/public/build \
-v /data/ulthon_admin/safe_storage:/var/www/html/storage \
--name ulthon_admin ulthon/ulthon_admin:202404071454 \
server
```
- 端口需要暴露80端口冒号左侧可自定义修改为本机可用的一个端口。
- runtime需要映射runtime目录冒号左侧可自定义修改为指定的目录推荐设置因为缓存、日志等文件都保存在这个目录下不指定的话重启丢失。
- public/storage框架默认的上传文件存储在public/storage下因此必须映射该目录如果系统不需要上传则可以不设置。
- public/build框架默认的生成文件比如海报、二维码存储在public/build下推荐映射否则重启后丢失。
- storage框架设计了一个安全存储的位置相对于storage在public下storage在项目根目录下因此无法直接请求到相对安全此时只能通过相关支持认证的控制器访问因此更安全可以用于存储身份证等敏感信息但此机制大多数项目用不到如果用到了必须要设置。
- 后端运行,`-d`参数可以让docker在后端运行。
如果有其他指定的目录可在Dockerfile中自行添加在命令中映射。
> 如果不映射目录,镜像不会出错,但重启后丢失。
#### 基本用法
内置了docker打包命令打包出的镜像支持两种调用方法
- server或空
- think
有两个基本的用法运行镜像后如果在最后增加任何参数或者增加server会启用镜像中的php-fpm和nginx使用`-d`后自动运行到后台,相当于框架一键运行。
如果以think开始传参则是调用think命令比如`docker run xxxxx think admin:version`,是调用内置命令。
> 实际上可以不以think开始也可以是其他路径的php文件但这里不过多讨论
#### 其他常用命令
```bash
# 一键删除停止的容器
docker rm $(sudo docker ps -a -q)
# 导出镜像
docker save e950efa97445 > ulthon_admin.tar
# 导入镜像
docker load < ulthon_admin.tar
```

View File

@@ -1,21 +1,25 @@
# 将代码中的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
#!/bin/bash
# 将代码中的php配置文件复制到php配置文件中
cp /var/www/html/docker/phprun.ini /usr/local/etc/php/conf.d
# # 将代码中的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
# 运行redis
nohup redis-server --requirepass "" &
# 运行定时任务
nohup php /var/www/html/think timer --local &
# # 将代码中的php配置文件复制到php配置文件中
# cp /var/www/html/docker/phprun.ini /usr/local/etc/php/conf.d
# # 运行redis
# nohup redis-server --requirepass "" &
# # 运行定时任务
# nohup php /var/www/html/think timer --local &
# 输出参数
echo "参数为:$@"
# 如果第一个参数是server或者没有参数则运行server
if [ "$1" = "server" ] || [ "$1" = "" ]; then
# 运行nginx
service nginx start
# 运行php-fpm
php-fpm
else
php "/var/www/html/""$@"
php "/var/www/html/""$@"
fi

View File

@@ -12,12 +12,14 @@ use think\console\Output;
class VersionBase extends Command
{
public const VERSION = 'v2.0.93';
public const VERSION = 'v2.0.94';
public const LAYUI_VERSION = '2.8.17';
public const COMMENT = [
'修复事件异常错误',
'新增docker用法和说明',
'优化timer指定本地地址',
'修复重置密码命令错误',
'发布新版本',
];