七天构建SpringCloud集群

day2:基础设施搭建

Posted by 月白 on Saturday, October 2, 2021

项目地址:jiuzhou (九州) https://github.com/yuebaix/jiuzhou

一、安装 Docker Desktop

创建桥接子网

docker network create -d bridge –subnet=172.18.0.0/16 –gateway 172.18.0.1 inner-network

二、配置文件

version: '3.1'

services:

  mysql:
    image: mysql:5.7.35
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
    restart: always
    container_name: mysql
    dns:
      - 119.29.29.29
      - 114.114.114.114
      - 8.8.8.8
    networks:
      default:
        ipv4_address: 172.18.0.2
    ports:
      - "13306:3306"
    volumes:
      - E:\jiuzhou\volumes\mysql\config:/etc/mysql/conf.d
      - E:\jiuzhou\volumes\mysql\data:/var/lib/mysql
      - E:\jiuzhou\volumes\mysql\initsql:/docker-entrypoint-initdb.d
    environment:
#      MYSQL_ROOT_PASSWORD: 'yuebaix'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
      TZ: Asia/Shanghai

  zk:
    image: zookeeper:3.7.0
    restart: always
    container_name: zk
    hostname: zk
    dns:
      - 119.29.29.29
      - 114.114.114.114
      - 8.8.8.8
    networks:
      default:
        ipv4_address: 172.18.0.11
    ports:
      - "12181:2181"
#      - "11011:8080"
    volumes:
      - E:\jiuzhou\volumes\zk\data:/data
      - E:\jiuzhou\volumes\zk\datalog:/datalog
      - E:\jiuzhou\volumes\zk\logs:/logs
    environment:
      ZOO_STANDALONE_ENABLED: 'true'
      ZOO_ADMINSERVER_ENABLED: 'false'

  apollo-quick-start:
    image: yuebaix/apollo-quick-start
    container_name: apollo-quick-start
    dns:
      - 119.29.29.29
      - 114.114.114.114
      - 8.8.8.8
    networks:
      default:
        ipv4_address: 172.18.0.21
    ports:
      - "11021:8080"
      - "11022:8090"
      - "11023:8070"
    environment:
      JAVA_OPTS: '-Xms100m -Xmx1000m -Xmn100m -Xss256k -XX:MetaspaceSize=10m -XX:MaxMetaspaceSize=250m'
    depends_on:
      - mysql
    links:
      - mysql:apollo-db

  xxl:
    image: xuxueli/xxl-job-admin:2.3.0
    restart: always
    container_name: xxl
    dns:
      - 119.29.29.29
      - 114.114.114.114
      - 8.8.8.8
    networks:
      default:
        ipv4_address: 172.18.0.31
    ports:
      - "11031:8080"
    volumes:
      - E:\jiuzhou\volumes\xxl\applogs:/data/applogs
    environment:
      PARAMS: |
        --spring.datasource.url=jdbc:mysql://mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
        --spring.datasource.username=root
        --spring.datasource.password=        
    depends_on:
      - mysql
    links:
      - mysql

networks:
  default:
    external:
      name: inner-network

三、常用命令

docker build -t image-name .
docker-compose -f docker-compose.yml up

docker tag origin-image-name tag-image-name
docker push tag-image-name

docker pull tag-image-name

docker run -it image-name /bin/bash
docker exec -it container-name /bin/bash
docker cp container-name:/path .

四、开发日志

  • 1.C盘爆了

不经常用家里的电脑进行开发,而且本身C盘容量已经很小了,只剩6个G,一边开发一边监控硬盘大小,最终将gradle跟maven的本地缓存配置到其他盘,暂时缓解这个问题。

  • 2.C盘又爆了

准备用docker搭建集群,结果因为docker desktop升级了wsl2,配置本地路径的配置没了,本地镜像与运行时文件,都挤在C盘,最终决定把后面一个盘的空间 释放出来,合并到C盘,中间备份分类文件,安装启动U盘,各种费力。

  • 3.内存爆了

最后C盘扩充了80个G,应该够用很长时间了。在叠加中间件的时候发现win的linux虚拟机内存占用很高,加上idea一下子什么都不干4个G没了,操作系统启动也得2个G。 apollo耗费内存接近2个G,于是决定优化一下JVM启动参数。官方快速启动的镜像不支持环境变量调整启动参数,决定拉下代码来,自己改一把。

  • 4.被换行符坑了

本来很简单的一个功能,感觉做起来也不复杂。结果就是各种运行报错,最终定位到是换行符的问题。idea导入文件按照操作系统直接给改成CRLF了,改完配置为LF, 重新run一遍通过。这事很蛋疼,一个是因为idea自动按操作系统给你转很蛋疼,一个是alpine里换行符会造成shell执行不下去,果然开发只能用mac。改完了顺道 给宋顺大佬提了个PR,看看会不会合,别人再蛋疼一遍也没啥意义。