要使用docker-compose 必须要要有docker-compose.yml 文件,内容大致如下:

version: '3'
services:
  external-redis:
    image: redis
    restart: unless-stopped
  external-mysql:
    image: mysql:5.7
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: xz123456
      MYSQL_DATABASE: payment
    volumes:
    - mysql-storage:/var/lib/mysql/
    - ./payment.sql:/docker-entrypoint-initdb.d/payment.sql
    - ./nacos.sql:/docker-entrypoint-initdb.d/nacos.sql
    ports:
    - 3306:3306
  external-nacos:
    image: nacos/nacos-server:latest
    restart: always
    ports:
      - 8848:8848
    environment:
      MODE: standalone
      SPRING_DATASOURCE_PLATFORM: mysql
      MYSQL_DATABASE_NUM: 1
      MYSQL_SERVICE_HOST: external-mysql
      MYSQL_SERVICE_PORT: 3306
      MYSQL_SERVICE_DB_NAME: nacos_config
      MYSQL_SERVICE_USER: root
      MYSQL_SERVICE_PASSWORD: xz123456
  external-zipkin:
    image: openzipkin/zipkin
    restart: unless-stopped
    ports:
      - "9411:9411"
  external-disque:
    image: richnorth/disque
    restart: unless-stopped
    ports:
    - 7711:7711
  base-notify-router:
    image: dhub.xxx.cn/biz/base-notify-router
    environment:
      DAS_ENV: local
    ports:
      - 8084:80
  core-payment-acc:
    image: dhub.xxx.cn/biz/core-payment-acc
    environment:
      DAS_ENV: local
volumes:
  mysql-storage:

除了一些常用的辅助镜像,还有自有的服务镜像,服务镜像已经提前打包发布到自己的镜像仓库上,以core-开头命名。

docker-compose要点:

  • 对于需要存储的镜像,可以配置volumes,这样下次启动时,即可恢复数据
  • 外部基础服务和线上保持相同名称,这样可以降低代码配置复杂度,譬如external-redis、external-mysql、external-zipkin、external-nacos等
  • 通过指定environment.DAS_ENV=local,可以区分线上环境和测试环境(当然也可以通过.env文件来配置,具体自行百度)
  • 注意对于开发系统,可以配置build节点,这样每次mvn package之后,即可使用”docker-compose up --build“参数启用镜像打包

当配置好docker-compose.yml文件后,直接通过以下命令,管理本地开发环境:

docker-compose up -d --build # 启用环境
docker-compose up -d --scale core-payment-gateway=10 #启动多实例,将core-payment-gateway配置成10个进程
docker-compose down # 关闭环境
docker-compose logs -f #查看日志
docker-compose logs -f core-payment-gateway #查看单个容器的镜像

当然,一定要有docker环境,在Idea中使用的话要有docker插件。