网站转app工具,wordpress 修改 点击量,广州百度网站推广,淘宝网站的推广与优化前言Docker可以将应用程序及环境很方便的以容器的形式启动#xff0c;但当应用程序依赖的服务比较多#xff0c;或是遇到一个大系统拆分的服务很多时#xff0c;如果还一个一个的根据镜像启动容器#xff0c;那就有点累人了#xff0c;到这有很多小伙伴会说#xff1a;弄… 前言Docker可以将应用程序及环境很方便的以容器的形式启动但当应用程序依赖的服务比较多或是遇到一个大系统拆分的服务很多时如果还一个一个的根据镜像启动容器那就有点累人了到这有很多小伙伴会说弄个脚本就搞定啦要的就是这个思路Docker提供了一个叫Docker Compose的工具一键启动相关服务。举个例比如开发一个Web项目需要有数据库、Redis、MongoDB、配置中心等等如果将其进行容器化可以有两种选择第一种就是把所有的服务依赖和应用程序全部构建为一个镜像然后以一个容器运行即这个容器里面包含了Web应用程序、数据库、Redis、MongoDB、配置中心等另一种方式就各自服务单独启动为一个容器服务比较独立一般可以一个一个的启动容器然后通过网络连接起来就行显然第二种方式是小伙伴们更多的选择如果能配上一个批量操作那就完美了而Docker Compose就是来干这个事的。正文1. 概述Docker Compose 是一个用于定义和运行多个容器服务的 Docker 应用程序工具搭配使用 YAML 文件来配置应用程序服务然后运行Docker Compose命令一键启动所有容器服务。2. 安装Docker默认安装环境下是不包含Docker Compose工具的需要单独安装。Docker Compose工具搭配Docker才有意义所以安装Docker Compose之前需要安装Docker。以下演示平台为Linux其他平台请参照文档https://docs.docker.com/compose/install/2.1 下载文件其实Docker Compose是一个可执行文件直接下载对应文件即可执行如下命令# 下载Docker Compose文件 这个地址下载比较慢
sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
# 这个地址快点
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose如下图2.2 授予执行权限下载下来的文件默认是没有执行权限的后续需要执行所以得授予执行权限执行如下命令即可sudo chmod x /usr/local/bin/docker-compose看看权限结果分配如下这样docker-compose就安装完啦。2.3 卸载如果需要卸载直接删除即可执行如下命令即可sudo rm /usr/local/bin/docker-compose3. 使用Docker Compose需要搭配YAML文件使用YAML 是一种人类友好的数据序列化语言适用于所有编程语言后缀名为.yml。所以在进行实操前需要大概的了解一下YAML的语法不要慌语法和Json的思路很像大概了解一下后续用到查文档就行啦。3.1 简单说说语法YAML文件内容是通过空格的缩进来代表层次常用的数据类型有如下对象键值对集合# yaml 对象语法
testKey:testValue
# Json 语法
{testKey:testValue}
# yaml 嵌套对象
testKey:{testKey1:testValue1,testKey2:testValue2}
# Json 语法
{testKey:{testKey1:testValue1,testKey2:testValue2}}数组一组按次序排列的数据用-前缀表示。# yaml 数组语法
-value1
-value2
-value3
# Json 数组语法
[value1,value2,value3]
# yaml 数组行内语法
testKey:[value1,value2]
# Json 语法
{testKey:[value1,value2]}纯量不可再分的值包括字符串、整数、浮点数、日期、布尔值等。# yaml
testKey:666
# Json
{testKey:666}
# yaml
isbool:true
# Json
{isbool:true}常规的基本语法格式约定如下大小写敏感使用空格缩进表示层级关系缩进不允许使用tab只允许空格缩进的空格数不重要只要相同层级的元素左对齐即可#表示注释大概了解上面这些关于日常Docker Compose用到的文件基本上够用了如果有需要进阶的可以去查查对应的语法。传送门https://yaml.org/spec/1.2.2/https://www.runoob.com/w3cnote/yaml-intro.html关于YAML文件内容中配置的命令和Dockerfile的命令差不多是一一对应的稍后会简单说说。3.2 实操撸文件这里还是以一个WebApi为例例中需要依赖Redis服务。创建项目编写例子这里只是引入了一个Redis的缓存包通过构造函数注入之后就可以直接用啦编写了一个API接口TestCache。这里还需要在Startup文件中注入相关服务并指定Redis的连接地址如下运行起来测试一下效果如下Redis中也有值了这里需要注意存入Redis中的类型是Hash。编写Dockerfile文件在项目根目录创建一个Dockerfile文件内容如下关于Dockerfile中的内容这里就不细说了之前有一篇文章专门分享的(点这里)。这里的Dockerfile目的就是将我们的WebApi项目构建为镜像和Redis没有关系不过这里不是通过执行命令构建而是通过Compose文件一起构建。注这里记得将Dockerfile文件通过右键-属性-设置为始终复制保证编译后的文件有最新文件编写Compose文件在项目根目录下创建docker-compose.yml文件内容如下有了这个项目就可以一键启动了这里需要稍微改一下我们原来的代码如下注这里记得将docker-compose.yml文件通过右键-属性-设置为始终复制保证编译后的文件有最新文件。3.3 体验一键启动将项目先发布并拷贝到对应的服务器上如下这里用的是我的阿里云服务器拷贝文件如下一键启动在docker-compose.yml所在的目录下执行如下命令docker-compose up下面是执行docker-compose up内部执行的步骤先是构建我们的程序然后拉取依赖的Redis服务并启动最后启动我们的程序。(执行顺序和依赖有关系)启动之后就可以根据docker-compose.yml文件中映射的端口访问了如下看看启动的容器名image-20211007165313310通过docker ps -n 2 查看最近启动的容器容器的名字规则是目录名_Compose文件中定义的服务名_序号那小伙伴肯定会好奇为什么程序能通过myredis名字连接到redis可以通过docker inspect composetest_myredis_1查看容器详情同样可以查看到API服务对应的容器也是用的composetest_default这个网络这个网络是一个桥接模式可以通过docker network ls看到如下docker compose常用命令docker-compose build:构建或者重新构建服务docker-compose up:构建、启动容器加上-d选项代表后台运行。docker-compose ps列出所有通过Compose运行的容器docker-compose logs打印相关日志信息docker-compose stop/start/restartd可以指定服务停止、开始和重新启动docker-compose命令和docker的命令基本是一样的。docker-compose.yml文件内容常用属性version指定 docker-compose.yml 文件的版本一般都是用version 3services定义多个容器集合有多少写多少build构建镜像和docker build一样功效environment配置环境变量和Dockerfile中ENV 关键字功能一样# 设置环境变量
environment:RACK_ENV: developmentSHOW: trueexpose暴露端口和Dockerfile中的EXPOSE 关键字功能一样expose:- 80- 9999ports配置端口映射和docker run -p一样功效ports:- 8080:80- 6379:6379volumes指定卷挂载路径与Dockerifle中的VOLUME 关键字功能一样volumes:- /var/lib/mysql- /opt/data:/var/lib/mysqlcommand覆盖容器启动后默认执行的命令和Dockerfile文件中的CMD命令一样command: bundle exec thin -p 3000image指定要用的镜像构建的时候会拉取。# 指定要使用redis镜像
image: redis上面列出了一些比较常用的具体的可以参考官网https://docs.docker.com/compose/compose-file/compose-file-v3/代码地址如下https://gitee.com/CodeZoe/microservies-demo/tree/main/DockerComposeDemo总结上文只是演示了Docker Compose的使用详细的Compose文件内容还需要在实际应用过程中根据实际需要查阅后续在说集群的时候还会说到。关注“Code综艺圈”和我一起学习吧