


docker compose 介绍
通过一个配置文件,可以让系统一键启动所有的运行环境,nodejs,mysql,redis,mongodb 等。
如果开发环境需要多个服务,就需要启动多个 Docker 容器。要连通多个 Docker 容器,就需要 Docker-compose。并且提供了 scale (服务扩容) 的功能。方便多多个容器一键管理。
就算是针对单个容器的更新也不用每次都去执行编译镜像,停止与删除容器,然后重新启动容器这样就有点麻烦了,如果用docker-compose一句话就可以操作了
docker-compose 可以记录你启动容器时候的命令,方便随时修改。而且复杂一点的命令代码可读性也更高。容器之间的依赖关系,比较清晰,比一个一个的手动使用命令启动要清晰很多。其实主要就是方便后期的维护和管理。
docker compose与docker-compose中间有杠和没杠的区别
1、独立安装的Compose,不论是V1还是V2版本,指令都是docker-compose
2、插件安装的Compose,在V2版本,指令是docker compose(中间是空格),新版的docker安装时会自动以插件的形式自动安装docker compose
3、支持同时采用两种方式安装Compose,安装后可以同时使用docker-compose和docker compose
我这里是安装docker的时候自动以插件的形式自动安装docker compose所以使用命令的时候总结不需要加段横线
docker compose 常用命令
查看docker compose 的帮助命令
使用docker compose —help或者docker compose都可以
查看docker compose的版本
docker compose version
docker compose ls
列出所有运行的服务容器
列出所有服务容器(包括未运行的容器)
docker-compose ls -a
docker compose ps
查看docker compose运行的容器,要有运行才能查看到,否者看不到且有相关提示
查看docker compose运行的以及未运行的容器
docker-compose ps -a
启动,构建等常用命令
构建并启动所有容器,如果镜像存在就重新构建
docker compose up -d --build
构建并启动指定的容器,如果镜像存在就重新构建
docker compose up -d --build xxx
启动所有服务
docker compose up -d
docker compose up -d与docker compose up -d —build的区别
docker-compose up -d
docker-compose up -d
命令用于启动已定义在docker-compose.yml
文件中的服务容器,并以守护进程的方式在后台运行。
具体解释如下:
docker-compose
: 是一个用于定义和运行多个容器应用的工具。up
: 用于创建并启动容器。-d
或--detach
: 表示以守护进程的方式运行容器,即在后台运行,不会阻塞终端。
docker-compose up —build
docker-compose up --build
命令用于重新构建并启动服务容器。
具体解释如下:
docker-compose
: 是一个用于定义和运行多个容器应用的工具。up
: 用于创建并启动容器。--build
: 表示重新构建容器的镜像。
当你执行docker-compose up --build
命令时,docker-compose
会解析docker-compose.yml
文件,并根据文件中定义的服务配置重新构建容器的镜像。这意味着它会重新执行容器镜像的构建过程,包括下载依赖、安装软件、配置环境等步骤。
两种启动方式的区别总结
docker-compose up -d
命令用于启动已经存在的服务容器,如果服务容器不存在则会自动创建。-d参数表示以守护进程的方式运行容器。docker-compose up --build
命令用于重新构建服务容器。如果服务容器已经存在,该命令会先停止并移除现有的容器,然后重新构建并启动容器。如果服务容器不存在,则会直接构建并启动容器。- 总结来说,
docker-compose up -d
用于启动已经存在的服务容器,而docker-compose up --build
用于重新构建并启动服务容器。
docker compose发布.net core项目
docker 发布.net core可以参考:https://www.tnblog.net/aojiancc2/article/details/5030
现在我们使用docker compose就是简化发布的步骤,让原本需要的去执行编译镜像,停止与删除容器,然后重新启动容器,变成一条命令。项目的发布和上传以及dockerfile文件的准备这里就不说了,参考前面给的链接即可。
一:创建与编写好docker-ocmpose.yml文件
可以先使用touch命令创建好docker-ocmpose.yml文件,在使用vim命令添加下面的内容:
version: "3.8"
services:
inquiry_api:
build:
context: ./inquirySysApi
# dockerfile: Dockerfile
image: inquiry_api:latest
container_name: inquiry_api
restart: always
ports:
- "8003:8003"
environment:
- TZ=Asia/Shanghai
配置说明:
inquiry_api 服务名称,可以配多个服务。
container_name 容器名称。
build 构建镜像路径及自定义dockerfile名称(可以不写会找默认的dockerfile文件)。
image 镜像名。
ports 对外暴露的端口(8003)与容器内部端口(8003)。
restart: alway docker启动时或容器挂掉时自动重启。
相关路径说明
我们需要发布的项目的文件在inquirySysApi下,所以上面docker-ocmpose.yml配置的build中context路径是./inquirySysApi,这个需要根据实际情况针对性调整即可,我这里是这样的。
具体的需要编辑成镜像的项目就是在inquirySysApi下,Dockerfile文件也在这个里边
二:执行构建并启动服务容器命令
执行构建并启动服务容器命令
docker compose up -d --build inquiry_api
上面的命令指定了服务名称,也可以不指定直接执行docker compose up -d —build这样就是作用到这个docker-ocmpose.yml下面的所有服务了,这个的示例只有一个服务所以接不接都一样。
如果执行的时候提示容器已经存在了,删除掉就行了,说明以前是直接手动启动的容器,没有通过docker compose去启动容器。
查看运行状态
三:下次在执行发布的时候只需要把项目发布后上传执行一句命令即可
下次在执行发布的时候只需要把项目发布后上传执行一句命令即可,就简化了每次发布都需要的停止删除容器,编译镜像,在启动容器的步骤了
docker compose up -d --build inquiry_api
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)