docker部署

来源:18-2 SpringBoot 工程自动化运维脚本

慕慕的学习

2021-09-29

老师,您好,如果想做docker部署应该怎么做?请指教一二,谢谢。

写回答

3回答

慕仔4607872

2022-02-08

version: "3"

services:

  zipkin:

    build: ./zipkin

    image: zipkin-demo:latest

#    restart: always

    ports:

    - "9411:9411"

    depends_on:

      - zookeeper

      - kafka


  sentinel:

    build: ./sentinel

    image: sentinel-dashboard:latest

    ports:

    - "7777:7777"


  zookeeper:

    image: zookeeper

#    restart: always

    ports:

    - "2181:2181"


  kafka:

    image: wurstmeister/kafka

#    restart: always

    ports:

    - "9092:9092"

    environment:

      KAFKA_BROKER_ID: 1

      KAFKA_LISTENERS: PLAINTEXT://kafka:9092

      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

    volumes:

    - ./docker.sock:/var/run/docker.sock

    depends_on:

      - zookeeper


  redis:

    image: redis

#    container_name: redis_02

#    restart: always

    ports:

    - "6379:6379"

    volumes:

    - ./redis/redis.conf:/usr/local/etc/redis/redis.conf

    - ./redis/redis_02/data:/data

    command:

      redis-server /usr/local/etc/redis/redis.conf --appendonly yes


  seata-server:

    image: seataio/seata-server:1.4.2

#    restart: always

    ports:

    - "8091:8091"

    environment:

      SEATA_PORT: 8091

      STORE_MODE: db

      SEATA_IP: 192.168.1.104 # 不指定的话,nacos服务上注册的IP是docker容器的地址,项目访问不了

#      SEATA_CONFIG_NAME: file:/root/seata-config/registry

    volumes:

      - "./seata-logs/logs:/root/logs/seata"

#      - "/home/shanks/seata-server-1.4.2/conf:/root/seata-config"

      - "./registry.conf:/seata-server/resources/registry.conf"

      - "./file.conf:/seata-server/resources/file.conf"


  rmqnamesrv:

    image: foxiswho/rocketmq:server

#    container_name: mqnamesrv

    ports:

      - "9876:9876"

    environment:

      JAVA_OPT: -server -Xms256m -Xmx256m

    volumes:

      - "./data/logs:/opt/logs"

      - "./data/store:/opt/store"

  mqbroker:

    image: foxiswho/rocketmq:broker

#    container_name: mqbroker

    ports:

      - 10911:10911

      - 10909:10909

    volumes:

      - ./data/logs:/opt/logs

      - ./data/store:/opt/store

      - ./brokerconf/broker.conf:/etc/rocketmq/broker.conf

    environment:

        NAMESRV_ADDR: "rmqnamesrv:9876"

        JAVA_OPTS: " -Duser.home=/opt"

        JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"

    command: mqbroker -c /etc/rocketmq/broker.conf

    depends_on:

      - rmqnamesrv

  rmqconsole:

    image: styletang/rocketmq-console-ng

#    container_name: rmqconsole

    ports:

      - 8081:8080

    environment:

      JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"

    depends_on:

      - rmqnamesrv

这是我用docker-compose.yml部署的,nacos没用docker是因为我单机上模拟docker集群注册上的机器节点显示的都是节点有重复的问题而且都是docker内部ip,所以naocs就物理机启动了。sentinel部署远程连接我本地应用查看日志会报health check超时问题导致nacos配置未同步到sentinel上。其他服务我本地应用都可以连接上。可以给你做参考,涉及到的配置文件如果有问题可以@我。分享是一种美德

2
1
慕慕的学习
您这个是基于单个服务来的吧,比如说kafka,zookeeper,redis都为实现高可用部署对吧,我来说说我的一个思路: (1)首先将afka,zookeeper,redis高可用docker镜像部署。 (2)将我们的实例服务项目工程引入maven的docker的依赖,将服务镜像化。 (3)将yaml配置文件的配置置于nacos中,利用服务启动拉取配置文件的配置。 (4)考虑动态配置信息,比如说环境,nacos的ip,nacos的用户名,密码(nacos可以做到环境隔离)。 (5)最后可以引入你的docker-compose.yml部署想要部署的服务,但是这个是一个过渡阶段,最终我使用k8s管理。
2022-02-09
共1条回复

慕妹8132766

2021-12-05

我最近在学这个课程,也研究了下,现在采用了这个解决方案。具体可以去看我的博客。

https://blog.csdn.net/qq_34533072/article/details/121731874

1
1
慕慕的学习
非常感谢您的建议
2021-12-06
共1条回复

张勤一

2021-09-29

同学你好:

    我对 docker 不太熟悉,如果你也不熟悉的话,先好好看看 docker 的一些简单命令,再去部署。

1
0

Spring Cloud / Alibaba 微服务架构实战

从架构设计到开发实践,手把手实现

1210 学习 · 674 问题

查看课程