Docker Compose学习

Docker Compose学习

1、什么是docker compose

      1. Compose是一个定义和管理多容器的工具,使用Python语言编写。

      2. 使用Compose配置文件描述多个容器应用的架构,比如使用什么镜像、数据卷、网络、映射端口等;

      3. 然后一条命令管理所有服务,比如启动、停止、重启等。

2、compose配置常用字段

img

3、配置详解

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
28
29
30
31
32
33
34
35
36
37
38
39
40
version: '3'   # docker-compose版本号

services: # 一级服务名称
mysql: # 服务名,可以通过服务名对容器进行管理(自己定义)
#1.docker容器主机名
hostname: mysql

#2.指定拉取镜像或者使用Dockerfile构建
image: mysql:5.7 # 指定拉取的镜像版本(方法1)
build: # 构建nginx 容器(方法2)
context: ./nginx # 指定环境在当前目录的 nginx文件夹中
dockerfile: Dockerfile # 指定使用nginx文件夹中的Dockerfile进行构建

#3.执行命令
command: python manage.py migrate && python manage.py runserver 0.0.0.0:80
command: uwsgi --ini uwsgi.ini # 启动uwsgi

#4.指定容器挂载路径进行持久化
volumes: # 将mysql的 /var/lib/mysql数据路径挂载到本地进行持久化
- ./mysql:/var/lib/mysql

#5. 暴露端口 或者 映射端口
expose: # 开放的端口号,给docker容器之间通信访问
- "3306"
ports:
- "80:80" # 把端口映射给宿主机,提供服务

#6.指定使用的网络
networks:
- lnmp
#7.当宿主机重启docker容器也自动重启
restart: always
#8. 添加环境变量
environment:
- MYSQL_ROOT_PASSWORD=root # root密码
- MYSQL_DATABASE=djangodocker # 创建数据库
- MYSQL_USER=django # 创建一个普通用户
- MYSQL_PASSWORD=django # 普通用户密码 #9. 添加依赖,必须先启动redis容器 depends_on: - redis
networks: # 创建网络
lnmp:

4、常用命令

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

docker-compose -f docker-compose.yml up -d # 启动docker-compose管理的所有容器
docker-compose ps # 列出 Compose 应用中的各个容器,类似docker ps
docker-compose logs web # 查看web服务日志
docker-compose down # 停止并移除容器、网络、镜像和数据卷.比stop更彻底
docker-compose images # 列出所有镜像



docker-compose stop # 停止 Compose 应用相关的所有容器,但不会删除它们
docker-compose restart # 重启YAML文件中定义的服务
docker-compose kill # 停止服务
docker-compose rm # 删除指定已经停止服务的容器(它会删除容器和网络,但是不会删除卷和镜像)
docker-compose build # 构建或重建服务
docker-compose pull # 拉去并下载指定服务镜像
docker-compose push # push服务镜像
docker-compose top # 显示各个容器内运行的进程

docker-compose常用管理命令

今日编排

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
version: '3'
services:
nacos:
image: nacos/nacos-server:1.4.2
container_name: nacos
restart: always
ports:
- '8848:8848'
network_mode: host
system:
hostname: system
container_name: system
build:
context: spring-cloud-support/spring-cloud-system
dockerfile: Dockerfile
network_mode: host
depends_on:
- nacos
restart: always
gateway:
hostname: gateway
container_name: gateway
build:
context: spring-cloud-gateway
dockerfile: Dockerfile
network_mode: host
depends_on:
- nacos
restart: always
dingtalk:
hostname: dingtalk
container_name: dingtalk
build:
context: spring-cloud-support/spring-cloud-dingtalk
dockerfile: Dockerfile
network_mode: host
depends_on:
- nacos
restart: always
oauth2:
hostname: oauth2
container_name: oauth2
build:
context: spring-cloud-oauth2
dockerfile: Dockerfile
network_mode: host
depends_on:
- nacos
restart: always
file:
hostname: file
container_name: file
build:
context: spring-cloud-support/spring-cloud-file
dockerfile: Dockerfile
network_mode: host
depends_on:
- nacos
restart: always

job-admin:
hostname: job-admin
container_name: job-admin
build:
context: spring-cloud-job/job-admin
dockerfile: Dockerfile
network_mode: host
depends_on:
- nacos
restart: always

次日编排

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
version: '3'

services:
nacos:
image: nacos/nacos-server:1.4.2
container_name: nacos
restart: always
ports:
- '8848:8848'
expose:
- "8848"
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
system:
hostname: system
container_name: system
build:
# image: registry.cn-shenzhen.aliyuncs.com/aifhold/system:2.0.6
context: spring-cloud-support/spring-cloud-system
dockerfile: Dockerfile
image: registry.cn-shenzhen.aliyuncs.com/aifhold/system:latest
# command: docker tag platform_system registry.cn-shenzhen.aliyuncs.com/aifhold/system
depends_on:
- nacos
restart: always
gateway:
hostname: gateway
container_name: gateway
build:
context: spring-cloud-gateway
dockerfile: Dockerfile
depends_on:
- nacos
restart: always
dingtalk:
hostname: dingtalk
container_name: dingtalk
build:
context: spring-cloud-support/spring-cloud-dingtalk
dockerfile: Dockerfile
depends_on:
- nacos
restart: always
oauth2:
hostname: oauth2
container_name: oauth2
build:
context: spring-cloud-oauth2
dockerfile: Dockerfile
depends_on:
- nacos
restart: always
file:
hostname: file
container_name: file
build:
context: spring-cloud-support/spring-cloud-file
dockerfile: Dockerfile
depends_on:
- nacos
restart: always

job-admin:
hostname: job-admin
container_name: job-admin
build:
context: spring-cloud-job/job-admin
dockerfile: Dockerfile
ports:
- '8081:8081'
expose:
- "8081"
restart: always
log:
hostname: log
container_name: log
build:
context: spring-cloud-monitor/spring-cloud-log-monitor
dockerfile: Dockerfile
depends_on:
- nacos
restart: always

IDEA docker compose报错 CreatProcess error =2 系统找不到指定文件

解决办法1:

下载

然后把docker-compose.exe放到指定位置然后在Idea的Docker设置里面设置路径

image-20210524180353595

解决办法2:

使用WIN10,安装docker desktop for windows 然后找到安装位置进行Idea配置

image-20210524180529131

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码

请我喝杯咖啡吧~

支付宝
微信