TNBLOG
首页
博客
视频
资源
问答
猿趣
手机
关于
搜索
收藏
便签
笔记
消息
创作
登录
剑轩
应无所住,而生其心
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
CSS
16篇
微服务
41篇
Git
15篇
.NET
104篇
移动开发
33篇
软件架构
23篇
.NET Core
119篇
.NET MVC
11篇
英语
3篇
随笔
90篇
Bootstrap
3篇
Redis
21篇
编辑器
10篇
Js相关
15篇
虚拟化
8篇
更多
Oracle
7篇
Python
14篇
数据库
26篇
EF
17篇
微信
3篇
前端
160篇
消息队列
6篇
docker
41篇
多线程
1篇
Java
4篇
软件基础
2篇
C++
2篇
WCF
7篇
Linux
7篇
nginx
5篇
K8S
9篇
ABP
2篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术
原
docker compose 基本使用。docker compose发布.net core项目
543
人阅读
2023/10/8 17:33
总访问:
4428746
评论:
0
收藏:
0
手机
分类:
docker
[TOC] ### docker compose 介绍 tn2>通过一个配置文件,可以让系统一键启动所有的运行环境,nodejs,mysql,redis,mongodb 等。<br/> 如果开发环境需要多个服务,就需要启动多个 Docker 容器。要连通多个 Docker 容器,就需要 Docker-compose。并且提供了 scale (服务扩容) 的功能。方便多多个容器一键管理。<br/> 就算是针对单个容器的更新也不用每次都去执行编译镜像,停止与删除容器,然后重新启动容器这样就有点麻烦了,如果用docker-compose一句话就可以操作了 tn4>docker-compose 可以记录你启动容器时候的命令,方便随时修改。而且复杂一点的命令代码可读性也更高。容器之间的依赖关系,比较清晰,比一个一个的手动使用命令启动要清晰很多。其实主要就是方便后期的维护和管理。 ##### docker compose与docker-compose中间有杠和没杠的区别 tn5>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都可以 ![](https://img.tnblog.net/arcimg/aojiancc2/577c5ccf033649f39c8228a77c0c5faf.png) #### 查看docker compose的版本 ``` docker compose version ``` ![](https://img.tnblog.net/arcimg/aojiancc2/322dc2eea07d4c22a90ac8dab7ab9981.png) #### docker compose ls 列出所有运行的服务容器 ![](https://img.tnblog.net/arcimg/aojiancc2/080e18d38e024c0ca40be1e6e812a4af.png) 列出所有服务容器(包括未运行的容器) ``` docker-compose ls -a ``` #### docker compose ps 查看docker compose运行的容器,要有运行才能查看到,否者看不到且有相关提示 ![](https://img.tnblog.net/arcimg/aojiancc2/36fc6fc620184a9ab07c98ce4a673771.png) 查看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启动时或容器挂掉时自动重启。 **相关路径说明** ![](https://img.tnblog.net/arcimg/aojiancc2/aab761a9734b4772b6f74b12d9acbaf7.png) 我们需要发布的项目的文件在inquirySysApi下,所以上面docker-ocmpose.yml配置的build中context路径是./inquirySysApi,这个需要根据实际情况针对性调整即可,我这里是这样的。 具体的需要编辑成镜像的项目就是在inquirySysApi下,Dockerfile文件也在这个里边 <img src="https://img.tnblog.net/arcimg/aojiancc2/76f0c23d360e4196a1be1625b73047d7.png" style="width:500px;height:auto;"> #### 二:执行构建并启动服务容器命令 执行构建并启动服务容器命令 ``` docker compose up -d --build inquiry_api ``` <img src="https://img.tnblog.net/arcimg/aojiancc2/178e7be91f6c428ba82db035c113580e.png" style="width:500px;height:auto;"> 上面的命令指定了服务名称,也可以不指定直接执行docker compose up -d --build这样就是作用到这个docker-ocmpose.yml下面的所有服务了,这个的示例只有一个服务所以接不接都一样。 如果执行的时候提示容器已经存在了,删除掉就行了,说明以前是直接手动启动的容器,没有通过docker compose去启动容器。 **查看运行状态** ![](https://img.tnblog.net/arcimg/aojiancc2/080e18d38e024c0ca40be1e6e812a4af.png) ![](https://img.tnblog.net/arcimg/aojiancc2/36fc6fc620184a9ab07c98ce4a673771.png) #### 三:下次在执行发布的时候只需要把项目发布后上传执行一句命令即可 下次在执行发布的时候只需要把项目发布后上传执行一句命令即可,就简化了每次发布都需要的停止删除容器,编译镜像,在启动容器的步骤了 ``` docker compose up -d --build inquiry_api ```
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}