Docker虚拟技术入门(Docker Compose解读与编写) (六)

1.什么是Composer

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

docker-compose.yml 的配置案例如下(配置参数参考下文):

2.Docker Composer安装及配置

Linux

Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:Releases · docker/compose · GitHub

运行以下命令以下载 Docker Compose 的当前稳定版本:

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

要安装其他版本的 Compose,请替换 1.24.1。

将可执行权限应用于二进制文件:

sudo chmod +x /usr/local/bin/docker-compose

创建软链:

 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功:

$ docker-compose --version

安装结构


实例(一):

创建rabbitmq容器

编写docker-compose.yml文件:(编写容器相关配置)

version: '3'
services:
  rabbitmq:
    image: rabbitmq:3.8-management      # 镜像文件
    container_name: rabbitmq            # 容器名为'rabbitmq'
    hostname: my-rabbit                 # 主机名(集群的时候需要这个)
    restart: always                     # 设置docker重启时容器也重启 
    environment:                        # 设置环境变量,相当于docker run命令中的-e
      TZ: Asia/Shanghai           
      LANG: en_US.UTF-8           
      RABBITMQ_DEFAULT_USER: admin
      RABBITMQ_DEFAULT_PASS: 123456 
    volumes:                            # 数据卷挂载路径设置,将本机目录映射到容器目录
      - "./rabbitmq/data:/var/lib/rabbitmq"
      - "./rabbitmq/log:/var/log/rabbitmq"   # 防止log日志报failed to open log file
    ports:                              # 配置端口映射
      - "5672:5672"                     # 生产者、消费者通信的端口
      - "15672:15672"                   # 管理面板的端口

上面的Compose文件就描述一个项目,安装rabbitmq使用公众镜像

载编写docker-compose.yml文件目录下。使用docker-compose命令启动容器

docker-compose up -d

运行结果

​​

docker-compose进阶

集群部署

部署cloud微服务利用dokcer-compose部署
  1. 实现思路查看提供的cloud微服务的文件夹,编写docker-compose文件
  2. 修改自己的cloud项目,将数据库,nacos地址都命名docker-compose中的服务名
  3. 使用maven工具打包,将项目中的每个微服务都打包为app.jar
  4. 将打包好的app.jar拷贝到clolud中的每一个对应的目录中
  5. 将cloud上传 至虚拟机,利用docker-compose up -d部署

compose文件

目录结构,我们不发布完,只发布byft-gateway,byft-auth,byft-admin三个模块

内容如下:


version: "3.2"
 
services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"
  adminservice:
    build: ./byft-admin/admin-boot
  authservice:
    build: ./byft-auth
  gateway:
    build: ./byft-gateway
    ports:
      - "10010:10010"
# 在docker-compose.yml 目录下运行docker-compose命令即可
docker-compose up -d

byft-gateway网关Dockerfile配置

FROM openjdk:8-jre
MAINTAINER byft liuhao@qq.com


RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo 'Asia/Shanghai' >/etc/timezone

# /tmp 目录作为容器数据卷目录,SpringBoot内嵌Tomcat容器默认使用/tmp作为工作目录,任何向 /tmp 中写入的信息不会记录进容器存储层,从而保证容器存储层的无状态化
# 在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp

# 复制jar至镜像
ADD target/byft-gateway.jar app.jar

ENTRYPOINT ["java", "-Xmx128m", "-Djava.security.egd=file:/dev/./urandom","-Dcsp.sentinel.app.type=1", "-jar", "/app.jar"]

EXPOSE 9999




byft-admin服务Dockerfile配置

# 基础镜像
FROM openjdk:8-jre

# 维护者信息
MAINTAINER byft <liuhao@qq.com>

# 设置容器时区为当前时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo 'Asia/Shanghai' >/etc/timezone

# /tmp 目录作为容器数据卷目录,SpringBoot内嵌Tomcat容器默认使用/tmp作为工作目录,任何向 /tmp 中写入的信息不会记录进容器存储层
# 在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp

# 复制主机文件至镜像内,复制的目录需放置在 Dockerfile 文件同级目录下
ADD target/admin-boot.jar app.jar

# 容器启动执行命令
ENTRYPOINT ["java", "-Xmx512m", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]

# 声明容器提供服务端口
EXPOSE 8800

byft-auth授权服务Dockerfile配置

FROM openjdk:8-jre
MAINTAINER byft liuhao@qq.com

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo 'Asia/Shanghai' >/etc/timezone

# /tmp 目录作为容器数据卷目录,SpringBoot内嵌Tomcat容器默认使用/tmp作为工作目录,任何向 /tmp 中写入的信息不会记录进容器存储层,从而保证容器存储层的无状态化
# 在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp

# 复制jar到镜像
ADD target/byft-auth.jar app.jar

ENTRYPOINT ["java", "-Xmx128m", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]

EXPOSE 8000
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安徽小刘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值