Docker Compose是一种工具,旨在帮助定义和共享多容器应用程序。使用 Compose,我们可以创建一个 YAML 文件来定义服务,并且可以使用单个命令来启动或拆除所有内容。
使用 Compose的一大优势是您可以在文件中定义应用程序集,将其保存在项目存储库的根目录下(现在受版本控制),并且可以轻松地让其他人为您的项目做出贡献。有人只需要克隆您的存储库并启动撰写应用程序。事实上,你现在可能会在 GitHub/GitLab 上看到很多项目就是这样做的。
> 我们这里以前面dockerapp 和mysql两个应用为例子使用compose将他们配置为一个应用程序集
查看版本
使用命令docker-compose version
查看compose版本信息 得到结果
1 | E:\code>docker compose version |
创建文件docker-compose.yml
还是以之前项目为例创建文件E:\code\dockerapp\docker-compose.yml 并且用文本编辑器打开开始编辑
- 第一行标注compose版本信息
1
version: v2.0.0-beta.6
- 定义应用程序集的所有服务配置也就是所有容器配置我们这里需要配置两个服务dockerapp和mysql
1
2
3
4
5version: v2.0.0-beta.6
services:
dockerapp:
mysql: - 接下来具体配置dockerapp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17version: v2.0.0-beta.6
services:
dockerapp:
image: node:12-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- "3000:3000"
working_dir: /dockerapp
volumes:
- ./:/dockerapp
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: 123456
MYSQL_DB: todos
mysql: - 再配置mysql容器信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24version: v2.0.0-beta.6
services:
dockerapp:
image: node:12-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- "3000:3000"
working_dir: /dockerapp
volumes:
- ./:/dockerapp
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: 123456
MYSQL_DB: todos
mysql:
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: todos
volumes:
- D:\docker\mysql3306\data:/var/lib/mysql
- D:\docker\mysql3306\conf:/etc/mysql/conf.d
生成应用集
- 回到应用根目录下的命令行状态
1
2
3
4E:\code\dockerapp>docker compose up -d
[+] Running 2/2
- Container dockerapp_mysql_1 Started 9.3s
- Container dockerapp_dockerapp_1 Started 9.1s
提示命令执行成功
- 测试结果打开浏览器http://localhost:3000 依然看到之前的dockerapp成功展示出来。
问题与回顾
虽然文章结果程序直接运行成功,实际中间经历很多波折,遇到很多坑, 通过一步步百度搜索最终问题全部解决,现在 把自己在这一过程中遇到的问题分享给大家。
- compose版本