【Docker实用篇】一文入门Docker(4)Docker-Compose

这篇具有很好参考价值的文章主要介绍了【Docker实用篇】一文入门Docker(4)Docker-Compose。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.Docker-Compose

1.1.初识DockerCompose

1.2.安装DockerCompose

1.2.1 修改文件权限

1.2.2 Base自动补全命令:

1.3部署微服务集群

1.3.1.compose文件

1.3.2.修改微服务配置

1.3.3.打包

1.3.4.拷贝jar包到部署目录

1.3.5.部署


1.Docker-Compose

Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!

【Docker实用篇】一文入门Docker(4)Docker-Compose,docker,docker,容器,运维

1.1.初识DockerCompose

Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。格式如下:

version: "3.8"
 services:
  mysql:
    image: mysql:5.7.25
    environment:
     MYSQL_ROOT_PASSWORD: 123 
    volumes:
     - "/tmp/mysql/data:/var/lib/mysql"
     - "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
  web:
    build: .
    ports:
     - "8090:8090"

上面的Compose文件就描述一个项目,其中包含两个容器:

  • mysql:一个基于mysql:5.7.25镜像构建的容器,并且挂载了两个目录

  • web:一个基于docker build临时构建的镜像容器,映射端口时8090

DockerCompose的详细语法参考官网:Overview | Docker Docs

其实DockerCompose文件可以看做是将多个docker run命令写到一个文件,只是语法稍有差异。

1.2.安装DockerCompose

# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

1.2.1 修改文件权限

修改文件权限:

# 修改权限
chmod +x /usr/local/bin/docker-compose

1.2.2 Base自动补全命令:

# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

1.3部署微服务集群

需求:将cloud-demo微服务集群利用DockerCompose部署

实现思路

① 查看cloud-demo文件夹,里面已经编写好了docker-compose文件

② 修改自己的cloud-demo项目,将数据库、nacos地址都命名为docker-compose中的服务名

③ 使用maven打包工具,将项目中的每个微服务都打包为app.jar

④ 将打包好的app.jar拷贝到cloud-demo中的每一个对应的子目录中

⑤ 将cloud-demo上传至虚拟机,利用 docker-compose up -d 来部署

1.3.1.compose文件

查看cloud-demo文件夹,里面已经编写好了docker-compose文件,而且每个微服务都准备了一个独立的目录:

【Docker实用篇】一文入门Docker(4)Docker-Compose,docker,docker,容器,运维

内容如下:

version: "3.2"
​
services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"
  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql"
      - "$PWD/mysql/conf:/etc/mysql/conf.d/"
  userservice:
    build: ./user-service
  orderservice:
    build: ./order-service
  gateway:
    build: ./gateway
    ports:
      - "10010:10010"

可以看到,其中包含5个service服务:

  • nacos:作为注册中心和配置中心

    • image: nacos/nacos-server: 基于nacos/nacos-server镜像构建

    • environment:环境变量

      • MODE: standalone:单点模式启动

    • ports:端口映射,这里暴露了8848端口

  • mysql:数据库

    • image: mysql:5.7.25:镜像版本是mysql:5.7.25

    • environment:环境变量

      • MYSQL_ROOT_PASSWORD: 123:设置数据库root账户的密码为123

    • volumes:数据卷挂载,这里挂载了mysql的data、conf目录,其中有我提前准备好的数据

  • userserviceorderservicegateway:都是基于Dockerfile临时构建的

查看mysql目录,可以看到其中已经准备好了cloud_order、cloud_user表:

【Docker实用篇】一文入门Docker(4)Docker-Compose,docker,docker,容器,运维

查看微服务目录,可以看到都包含Dockerfile文件:

【Docker实用篇】一文入门Docker(4)Docker-Compose,docker,docker,容器,运维

内容如下:

FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar

1.3.2.修改微服务配置

因为微服务将来要部署为docker容器,而容器之间互联不是通过IP地址,而是通过容器名。这里我们将order-service、user-service、gateway服务的mysql、nacos地址都修改为基于容器名的访问。

如下所示:

spring:
  datasource:
    url: jdbc:mysql://mysql:3306/cloud_order?useSSL=false
    username: root
    password: 123
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice
  cloud:
    nacos:
      server-addr: nacos:8848 # nacos服务地址

1.3.3.打包

接下来需要将我们的每个微服务都打包。因为之前查看到Dockerfile中的jar包名称都是app.jar,因此我们的每个微服务都需要用这个名称。

可以通过修改pom.xml中的打包名称来实现,每个微服务都需要修改:

<build>
  <!-- 服务打包的最终名称 -->
  <finalName>app</finalName>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

打包后:

【Docker实用篇】一文入门Docker(4)Docker-Compose,docker,docker,容器,运维

1.3.4.拷贝jar包到部署目录

编译打包好的app.jar文件,需要放到Dockerfile的同级目录中。注意:每个微服务的app.jar放到与服务名称对应的目录,别搞错了。

user-service:

【Docker实用篇】一文入门Docker(4)Docker-Compose,docker,docker,容器,运维

order-service:

【Docker实用篇】一文入门Docker(4)Docker-Compose,docker,docker,容器,运维

gateway:

【Docker实用篇】一文入门Docker(4)Docker-Compose,docker,docker,容器,运维

1.3.5.部署

最后,我们需要将文件整个cloud-demo文件夹上传到虚拟机中,理由DockerCompose部署。

上传到任意目录:

【Docker实用篇】一文入门Docker(4)Docker-Compose,docker,docker,容器,运维

部署:

进入cloud-demo目录,然后运行下面的命令:文章来源地址https://www.toymoban.com/news/detail-802678.html

docker-compose up -d

到了这里,关于【Docker实用篇】一文入门Docker(4)Docker-Compose的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【docker-compose】解决容器时区问题

            容器内时间比服务器慢8小时         容器时区默认 UTC 0          docker-compose.yaml 中设置时区

    2024年02月12日
    浏览(27)
  • 【RabbitMQ】【Docker】基于docker-compose构建rabbitmq容器

    本文通过docker-compose构建一个单体的rabbtimq容器。 首先需要有docker和docker-compose环境,docker安装[1],docker-compose安装[2]。 通过下列命令确定docker、docker-compose是否安装成功。 docker-compose在/usr/local/bin里,我们就在/usr/local下构建一个docker-compose目录,里面再构建各级不同容器的目

    2024年04月25日
    浏览(38)
  • docker-compose容器编排使用详解+示例

    Docker-Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启

    2023年04月22日
    浏览(30)
  • docker-compose 如何安排容器启动的顺序

    在使用docker-compose进行容器部署的时候,时常是需要对容器的启动顺序进行编排,比如在应用容器启动前,需要先启动数据库的容器。通过对官方文档的阅读,发现在docker-compose中,可以使用depends_on配合健康检查healthcheck来实现。 参考链接: https://docs.docker.com/compose/compose-fi

    2024年02月12日
    浏览(35)
  • 【云原生】Docker-compose单机容器集群编排

    Compose是单机编排容器集群或者是分布式服务容器的应用工具。通过Compose,可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。 Docker-Compose是一个容器编排工具。通过一个.yml或.yaml文件,将所有的容器的部署方法、文件映射、

    2024年02月09日
    浏览(43)
  • Docker-Compose 轻松搭建 Grafana+InfluxDb 实用 Jmeter 监控面板

    目录 前言: 1、背景 2、Granfana+InfluxDB 配置 2.1 服务搭建 2.2 配置 Grafana 数据源 2.3 配置 Grafana 面板 3、Jmeter 配置 3.1 配置 InfluxDB 监听器 3.2 实际效果 Grafana 和 InfluxDB 是两个非常流行的监控工具,它们可以帮助开发者对系统的性能和可用性进行实时监控。 前几天刚做了一个在

    2024年02月16日
    浏览(38)
  • 实战:win10安装docker并用docker-compose构建运行容器

    Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。但是某些时候我们没有Linux环境怎么破?为了解决这个问题我们可以用VM虚拟机上安装Linux系统进行处理。然而对于我们的WIN10系统自带Hyper-V虚拟机,简直不要太爽。我们可以直接开启Hyper-V服务,并安

    2024年02月12日
    浏览(42)
  • 实战:用docker-compose容器化springboot项目

    前面我们学习和实战了用dockerfile构建镜像,通过镜像可以任意在docker环境容器化部署项目。但是作为WEB领域的开发者,大多都是微服务架构,一个项目会有很多的子项目和中间件,一个个的容器化部署会非常的麻烦。那么,此时我们可以用docker-compose批量构建镜像和容器化,

    2024年02月10日
    浏览(34)
  • 尚硅谷Docker实战教程-笔记12【高级篇,Docker-compose容器编排】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】 视频地址:尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【基础篇,Docker理念简介、官网介绍、平台入门图解、平台架构图解】 尚硅谷Docker实战教程-笔记02【基础篇,Do

    2024年02月16日
    浏览(37)
  • 【Docker】解决docker-compose启动的容器一直处于restarting状态的问题

    通过如下的文件启动容器后 status一直处于Restarting 且执行如下命令报错: 改成如下后解决 参考:https://stackoverflow.com/a/63990209

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包