使用Docker Compose启动Java(Jar)服务

前言

之前都是把启动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

查看镜像设置是否生效

1
sudo docker info

配置文件

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

运行

运行

1
docker-compose up

后台运行

1
docker-compose up -d

停止并卸载

1
docker-compose down

停止

1
docker-compose stop

启动

1
docker-compose start

内存

查看现在占用的内存

1
docker stats

内存参考

场景 容器内存起点
低流量、接口轻、几乎不用 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

验证配置

检查配置是否有误

1
docker-compose config