目录
前言
使用
如果你部署项目需要很多个容器, 并且还是在手动一个一个启动的话来试试Docker Compose, 只需要写好Docker Compose文件运行命令就能帮你一次性全启动, 对微服务很友好啊~
运行以下命令查看是否有版本号, 确保你已经安装了Docker Compose
docker-compose -version
如果没有安装的话可运行以下命令进行安装
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
有版本号要求的更换为链接当中的版本即可
接下来创建一个docker-compose.yml文件, 书写如下代码(仅作为参考):
version: '3.8' # compose文件的版本, 版本不一样语法可能也有差异
services:
app:
build: . # 构建当前目录下的dockerfile
ports:
- "6898:8080" # 容器的端口映射
container_name: app_container # 容器名
volumes:
- ./web:/usr/local/web # 当前目录下的项目挂载到容器内的web目录(前提是容器内有该目录, 因此可以在dockerfile里加一个创建该目录的命令)
- ./localhost:/usr/local/tomcat/apache-tomcat-9.0.73/conf/Catalina/localhost
depends_on:
- db # 启动该服务依赖于db服务, 添加该参数后可以做到先启动db服务再启动当前的服务
db:
image: mysql:5.7.41 # 根据mysql镜像创建容器
ports:
- "3396:3306" # 容器的端口映射
container_name: mysql_container # 容器名
environment:
MYSQL_ROOT_PASSWORD: root # 设置root用户的密码
MYSQL_DATABASE: test # 新建库
volumes:
- ./initdb:/docker-entrypoint-initdb.d # 将当前目录下的initdb文件夹挂载到docker-entrypoint-initdb.d 容器启动时自动运行initdb文件夹下的文件
compose文件的版本要注意看能否在你的docker版本上使用:
更多参数可以参考:
有一点需要说明, 我在db服务中添加了一个数据卷./initdb:/docker-entrypoint-initdb.d, 我在注释中已经说明了它的作用, 当它运行容器后会自动执行initdb文件夹下的*.sql脚本等, 比如我正好需要在创建的同时添加一些初始化数据, 那么只需要把sql脚本放入initdb文件夹挂载即可, 这些初始化操作会默认在MYSQL_DATABASE指定的库当中进行, 下面是mysql官方镜像的说明
mysql官方镜像地址:Docker
我们在使用Docker Compose启动容器后默认会为里面的容器建一条可以相互访问的网络, 假如我要app服务访问db服务的话只需要这么写:http://db:端口号/....../......
我的目录:
接下来只需把相关东西上传到服务器, 进入docker-compose.yml存在的目录, 执行命令就好啦
docker-compose up -d
如果想在前台启动调式的话去掉-d参数即可
点赞,你的认可是我创作的动力 !
收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!