使用Docker Compose构建本地镜像并启动服务

前言

经常我们需要构建自己的镜像,为了方便记录启动镜像的配置参数,这里使用Docker Compose来配置。

查看版本

1
docker-compose version

版本兼容

Compose 文件格式版本 最低 Docker Engine 版本 最低 Compose V1 版本 备注
1 1.9.0+ 1.0.0+ 已废弃,不支持网络/卷等现代特性
2.0 1.10.0+ 1.6.0+ 引入 services 顶层键
2.1 1.12.0+ 1.9.0+ 支持 build 参数、IPv6
2.2, 3.0, 3.1, 3.2 1.13.0+ 1.10.0+ 3.x 开始支持 Swarm Mode
2.3, 3.3, 3.4, 3.5 17.06.0+ 1.16.0+ 增加部署选项、健康检查改进
2.4 17.12.0+ 1.21.0+ 最后一个 2.x 版本,支持 platform
3.6 18.02.0+ 1.21.0+ 支持 tmpfs、长期运行服务优化
3.7 18.06.0+ 1.22.0+ 支持 rollback_config、secret/config 改进
3.8 19.03.0+ 1.25.0+ 推荐版本,支持 GPU、构建缓存
3.9 20.10.0+ 1.29.0+ 支持 pull_policyprofiles

配置文件

使用在线镜像

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
version: "2.2"

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

注意

要添加时区配置 否则日志中时间不对。

映射

无论是路径映射还是端口映射都是 外部:内部

本地构建镜像

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: "2.2"

services:
app:
build:
context: .
dockerfile: Dockerfile
image: psvmc/face_recognition:v1.5
container_name: face_recognition_01
restart: unless-stopped
environment:
TZ: Asia/Shanghai
ports:
- "8000:8000"
mem_limit: 1g

运行

构建

1
docker-compose build

运行

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