docker-compose是一个定义复杂应用的工具,我们平时使用docker,一般是docker run …
然而这样每次只能运行一个镜像,而且不能保证各个容器之间是能够正常通信的,如果想要用docker做到这种容器之间相互通信,要么你每次的命令加上一大串的参数,比如说同一个网络名字啊,link啊,dependon啊,如此之类的,然而单单跑一个容器的命令的够长了,这个容器要是和4、5个其他的容器通信,那怎么写?
这就引出了我们的第二种方法:docker-compose,
关于这个工具我们需要下载,如果我们使用的是docker-desktop这种可视化客户端,那么他已经安装好了:怎么判断自己是不是已经完成了docker-compose的下载?
docker-compose -v 即可
博主跑一个微服务的项目一般喜欢先把环境搭好,然后在测试我么的项目正确性。
所以这里就分成了两个docker-compose文件,一个是env,一个是我们的项目app。
这里先介绍一下docker-compse的用法。
我们写好一个yml文件,然后docker-compose命令去执行,而这个文件就相当于pom配置文件。
具体举个例子:
docker-compose -f XXXX.yml up 要是路径上面只有一个docker-compose.yml文件那么
-f也可以不加上去,反正就是寻找的意思。
先介绍docker-compose-env.yml, 这里截取一部分,来讲一讲都是什么含义
services:
mysql:
image: mysql:8.0.26
container_name: mysql
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
restart: always
environment:
MYSQL_ROOT_PASSWORD: 185450844 #设置root帐号密码
ports:
- 3307:3306
volumes:
- /Users/csen/dockerProject/mydata/mysql/data/db:/var/lib/mysql #数据文件挂载
- /Users/csen/dockerProject/mydata/mysql/data/conf:/etc/mysql/conf.d #配置文件挂载
- /Users/csen/dockerProject/mydata/mysql/log:/var/log/mysql #日志文件挂载
- command:声明启动参数
- image:你docker里面的镜像名字
- container_name:启动后的容器名字
- environment:设置容器中的环境变量
- privileged:用来给容器root权限,不安全的
- network_mode: 设置容器的网络模式
- ports:端口
- volumes:挂载,这个大家都没说清楚,就是用冒号前面的路径代替后面,这样一些数据啊配置啊就可以跟着你的要求走。前面的是自己的,后面的是容器的。
下面介绍docker-compose-app.yml
version: '3'
services:
XXXX:
image: XXXX:latest
container_name: XXXX
ports:
- 8081:8081
volumes:
- /Users/csen/dockerProject/XXXX/logs:/var/logs
- /etc/localtime:/etc/localtime
environment:
- 'TZ="Asia/Shanghai"'
external_links:
- elasticsearch:es #可以用es这个域名访问elasticsearch服务
- mysql:db #可以用db这个域名访问mysql服务
- nacos-registry:nacos
和docker-compose-env很像,不过我只是用来启动我们的微服务项目,这里面关键就是external_links,我们在项目中使用的很多localhost要替换成这些域名。
这里的image是我们build好的项目镜像,这里就要提一嘴了。这个是我们build的镜像
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),用于构建镜像。每一条指令构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建
具体的可见这篇大佬的博客: [Dockerfile](https://blog.csdn.net/m0_46090675/article/details/121846718?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166489555716782417065884%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166489555716782417065884&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-121846718-null-null.142v51control,201