前言
之前都是把启动Jar的脚本注册成服务,但是服务中ffmpeg调用一直失败,这里就用Docker来运行。
设置镜像源
查看源
1
| docker info | grep -A 10 "Registry Mirrors"
|
或者
1
| docker info --format '{{json .RegistryConfig.Mirrors}}'
|
设置源
针对Docker客户端版本大于 1.10.0 的用户
创建或修改 /etc/docker/daemon.json 文件
1
| vi /etc/docker/daemon.json
|
添加或修改
1 2 3 4 5 6 7 8 9
| { "registry-mirrors": [ "https://docker.1ms.run/", "https://docker.m.daocloud.io", "https://docker.imgdb.de", "https://docker-0.unsee.tech", "https://docker.hlmirror.com" ] }
|
重启Docker
1 2
| systemctl daemon-reload systemctl restart docker.service
|
查看镜像设置是否生效
配置文件
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| version: "2.4"
services: app: image: eclipse-temurin:17-jre-jammy container_name: zxs_file_api restart: unless-stopped environment: - TZ=Asia/Shanghai - JAVA_TOOL_OPTIONS=-Duser.timezone=Asia/Shanghai volumes: - ./:/zapp/ - ./static/:/data/wwwjarapi/ai-adaline/zxs-file-api/static/ - /data/tools/ffmpeg/:/data/tools/ffmpeg/ working_dir: /zapp/ command: [ "java", "-jar", "zxs_file_api-0.0.1-SNAPSHOT.jar" ] ports: - "8918:8918" mem_limit: 2g
|
注意
要添加时区配置 否则日志中时间不对。
映射
无论是路径映射还是端口映射都是 外部:内部
拉取镜像
JRE
1
| docker pull eclipse-temurin:17-jre-jammy
|
JDK
1
| docker pull eclipse-temurin:17-jdk-jammy
|
运行
运行
后台运行
停止并卸载
停止
启动
内存
查看现在占用的内存
内存参考
| 场景 |
容器内存起点 |
| 低流量、接口轻、几乎不用 FFmpeg |
512M~1G |
| 中等流量、常用业务逻辑、偶尔调 ffmpeg |
1G~2G |
| 高并发、大缓存、频繁音视频/大文件处理 |
2G~4G+ |
设置内存限制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| version: "2.4"
services: app: image: eclipse-temurin:17-jre-jammy container_name: zxs_file_api restart: unless-stopped environment: - TZ=Asia/Shanghai - JAVA_TOOL_OPTIONS=-Duser.timezone=Asia/Shanghai volumes: - ./:/zapp/ - ./static/:/data/wwwjarapi/ai-adaline/zxs-file-api/static/ - /data/tools/ffmpeg/:/data/tools/ffmpeg/ working_dir: /zapp/ command: [ "java", "-jar", "zxs_file_api-0.0.1-SNAPSHOT.jar" ] ports: - "8918:8918" mem_limit: 2g
|
验证配置
检查配置是否有误