Docker-compose

docker-compose.yml 配置详解

批量执行容器:docker compose 就只需要写一个 docker-compose.yml 文件,配置多个 service 的启动方式和 depends_on 依赖顺序。然后 docker-compose up 就可以批量按顺序启动一批容器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# version 是指定 docker-compose.yml 的版本,不同版本配置不同。
version: '3.8'
services:
nest-app:
build:
context: ./
dockerfile: ./Dockerfile
# 设置了 depends_on 后 容器则会先执行下面两个,这样便解决了顺序的问题
depends_on:
- mysql-container
- redis-container
# 配置重启策略
restart: 'always'
ports:
- '3000:3000'
mysql-container:
image: mysql
ports:
- '3306:3306'
volumes:
- D:/Docker/mysql:/var/lib/mysql
redis-container:
image: redis
ports:
- '6379:6379'
volumes:
- D:/Docker/redis:/data

docker-compose.yml存在的路径下执行即可 < /home/compose >

1
2
3
4
5
docker-compose stop // 停止不了就删除正运行的容器即可
docker-compose up -d // 启动 -d 为后台运行
两者结合可以进行重启

docker-compose restart <service> 重启指定的服务

Docker Desktop 中显示方式也不同了:

问题

内部 jenkins 容器 无法与 github ssh 链接

多发生在在重启 docker-compose 后。不需要重新生成 ssh 密钥再绑定。只需要按照以下步骤执行即可:

进入 Jenkins 容器的 shell 环境:

1
2
docker-compose exec docker_jenkins bash
docker exec -it jenkins /bin/bash

(可选若不存在) 创建密钥 详解

1
ssh-keygen -t rsa -C 1324022569@qq.com

手动添加 GitHub 主机密钥到已知主机列表:然后 输入 yes

1
ssh-keyscan github.com  ~/.ssh/known_hosts

验证是否添加成功:(必要)

1
ssh -T git@github.com

容器 bash 中没有进程管理命令:

  • 如果你的容器是基于DebianUbuntu的系统,你可以使用**apt-get update && apt-get install procps**命令来安装 ps 命令<font style="color:rgb(17, 17, 17);">jenkins</font>
  • 如果你的容器是基于CentOSRedHat的系统,你可以使用**<font style="color:rgb(17, 17, 17);">yum install procps-ng</font>**命令来安装ps命令