docker-compose安装部署微服务,文件内容已到生产环境可放心使用

只需三步:1.docker内部安装jdk

                     执行命令:docker pull openjdk:8u92-jdk-alpine,推荐使用--alpine因为他只有50MB左右,可以根据这个地址找到各种镜像Docker Hub

 2.编写docker-compose应用文件

执行vi docker-compose-env.yml

version: '3.8'
services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci  #覆盖容器启动后默认执行的启动mysql命令
    restart: always  #关机或者重启机器时,docker同时重启容器,一般mysql服务可以这么设置,保持服务一直都在
    environment:
      MYSQL_ROOT_PASSWORD: root #设置root帐号密码
    ports:
      - 3306:3306
    volumes:
      - /mydata/mysql/data/db:/var/lib/mysql #数据文件挂载
      - /mydata/mysql/data/conf:/etc/mysql/conf.d #配置文件挂载
      - /mydata/mysql/log:/var/log/mysql #日志文件挂载
  redis:   
    image: redis:5.0
    container_name: redis
    restart: always
    command: redis-server --requirepass 123456 --appendonly yes  
    volumes:
      - /mydata/redis/data:/data #数据文件挂载
    ports:
      - 6379:6379
  nacos:
    image: nacos/nacos-server:2.0.3
    container_name: nacos
    restart: always
    environment:
      - MODE=standalone
      - SPRING_DATASOURCE_PLATFORM=mysql
    volumes:
      - /mydata/nacos/logs/:/home/nacos/logs
      - /mydata/nacos/conf/application.properties:/home/nacos/conf/application.properties
    ports:
      - "8848:8848"
  sentinel:
    image: bladex/sentinel-dashboard:1.8.0
    container_name: sentinel-dashboard
    command: nohup java -Dserver.port=9207 -Dcsp.sentinel.dashboard.server=localhost:9207 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar &
    restart: always
  mqnamesrv:
    image: apache/rocketmq:4.9.3
    container_name: mqnamesrv
    restart: always    
    ports:
      - 9876:9876
    volumes:
      - /mydata/rocketmq/logs:/home/rocketmq/rocketmq-4.9.3/logs
      - /mydata/rocketmq/store:/home/rocketmq/rocketmq-4.9.3/store
    command: sh mqnamesrv
    environment:
      JAVA_OPT: -server -Xms256m -Xmx256m 
  broker:
    image: apache/rocketmq:4.9.3
    container_name: rmqbroker
    restart: always
    privileged: true    
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    volumes:
      - /mydata/rocketmq/logs:/home/rocketmq/rocketmq-4.9.3/logs
      - /mydata/rocketmq/store:/home/rocketmq/rocketmq-4.9.3/store
      - /mydata/rocketmq/conf/broker.conf:/home/rocketmq/rocketmq-4.9.3/conf/broker.conf  
    command: sh mqbroker -n mqnamesrv:9876 -c /home/rocketmq/rocketmq-4.9.3/conf/broker.conf
    environment:
      JAVA_OPT_EXT: -server -Xms256m -Xmx256m -Xmn128m
    depends_on:
      - mqnamesrv
  console:
    image: styletang/rocketmq-console-ng
    container_name: rocketmq-console-ng
    restart: always    
    ports:
      - 8076:8080
    depends_on:
      - mqnamesrv
    environment:
      - JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=mqnamesrv:9876 
      - Dcom.rocketmq.sendMessageWithVIPChannel=false

有两个配置文件需要挂载一个是nacos的application.properties

nacos的配置文件需要改的地方

 另外一个是rocketmq的broker.conf

执行命令:docker-compose -f docker-compose-env.yml up -d

 3.编写docker-compose服务文件

将我们的服务ruoyi-mq的配置文件xxxx.yml连接地址修改为容器名(来源于docker-compose-application的external_links


# Spring
spring:
  application:
    # 应用名称
    name: ruoyi-mq
    profiles:
      # 环境配置
      active: dev
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: nacos:8848
        namespace: 0c17cef6-42e0-469b-a5f9-
        group: dev
      config:
        # 配置中心地址
        server-addr: nacos:8848
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
        namespace: 0c17cef6-42e0-469b-a5f9-6b206c
        group: dev

编写Dockerfile文件

# 基于哪个镜像
From openjdk:8u92-jdk-alpine
# 复制文件到容器
ADD ruoyi-mq.jar /app.jar
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=dev"]

 执行:vi docker-compose-application.yml

version: '3.8'
services:
  ruoyi-mq:
    image: ruoyi-mq:0.0.1  #指定镜像名称
    build: ./zdxy-mq  #指定Dockfile所在路径
    container_name: ruoyi-mq  #指定启动容器名称
    ports:
      - 9206:9206
    volumes:
      - /etc/localtime:/etc/localtime:ro  #同步宿主机与容器时间,ro代表readonly只读
    environment:
      - JAVA_TOOL_OPTIONS=-Xmx256m -Xms128m -XX:MaxMetaspaceSize=256m
    external_links:  #访问不在同一个compose文件管理的服务需要用external_links,前提是这些服务都在同一个网络下才能正常访问 
      - nacos:nacos  #可以用nacos这个域名访问nacos服务
      - mysql:db  #可以用db这个域名访问mysql服务
      - redis:redis
      - mqnamesrv:mqnamesrv
      - broker:broker
执行:docker-compose -f docker-compose-application.yml up -d

我给大家看一下我的文件目录结构

注意:安装应用时会出现启动问题一般是因为volumes格式:挂载目录:docker文件目录

挂载目录文件是你准备好的文件或者目录一定要存在,docker文件目录一定也要存在,这个时候就有人说了,我都还没启动怎么知道有没有,我想说的是相同应用不同的版本docker的文件目录也可能不一样,如果有需要要先用docker安装一下,提前预知路径。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值