docker-compose.yml 4.29 KB
version: "3"
services:

  # 服务启动顺序没有做healthcheck,会导致服务启动失败,后期需要补上

  # nacos
  nacos:
    image: nacos/nacos-server:v2.1.0
    hostname: nacos-server
    restart: always
    container_name: project-nacos
    environment:
      - PREFER_HOST_MODE=hostname
      - MODE=standalone
    ports:
      - "8848:8848"

  # nacos config-init
  nacos-setup:
    image: radial/busyboxplus:curl
    container_name: config-init
    volumes:
      - ../config-init:/work
    working_dir: /work/scripts
    restart: "no"
    entrypoint: [ "./nacos-config-quick.sh"]   
    depends_on:
      - nacos
      - postgres
      - project-user

  # postgres
  postgres:
    image: bitnami/postgresql:15.2.0
    hostname: project-pg
    restart: always
    container_name: project-pg
    environment:
#      - POSTGRESQL_USERNAME=postgres
      - POSTGRESQL_PASSWORD=postgres
    ports:
    # 5432端口在win机器上会报错
      - "8432:5432"
    volumes: 
      - ../config-init/sql/init.sql:/docker-entrypoint-initdb.d/create_tables.sql
      - /data1/data/postgresql:/bitnami/postgresql

  # postgres web console
  pgadmin:
    container_name: project-pgadmin
    image: dpage/pgadmin4
    environment:
      POSTGRES_PASSWORD: postgres
      PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
      PGADMIN_DEFAULT_PASSWORD: admin
      PGADMIN_CONFIG_SERVER_MODE: 'False'
    ports:
      - "8050:80"
    depends_on:
      - postgres

  # kafka
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
    hostname: zookeeper
  kafka:
    image: wurstmeister/kafka
    command: [start-kafka.sh]
    ports:
      - "9092:9092"
    hostname: kafka
    environment:
      # KAFKA_CREATE_TOPICS: "UploadFile:1:1,GetFile:1:1,TrackUpload:1:1,GetEmailContent:1:1" # topic:partition:replicas
      KAFKA_ADVERTISED_HOST_NAME: kafka # docker-machine ip
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_PORT: 9092
    depends_on:
      - zookeeper

  # seata
  seata-server:
    image: seataio/seata-server:1.5.1
    hostname: seata-server
    restart: always
    container_name: project-seata-server
    ports:
      - "8091:8091"
    environment:
      - SEATA_PORT=8091
      - STORE_MODE=file

  # redis
  redis:
    image: redis:6.2-alpine
    hostname: redis
    restart: always
    container_name: project-redis
    ports:
      - "6379:6379"
    command: redis-server --save 20 1 --loglevel warning  --requirepass 123456

  # gateway
  project-gateway:
    image: project-gateway
    restart: always
    hostname: gateway-service
    build:
      dockerfile: ./project-gateway/Dockerfile
      context: ../
    env_file:
        - .env
    container_name: project-gateway
    ports:
      - ${GATEWAY_PORT}:${GATEWAY_PORT}
    depends_on:
      - nacos
      
  project-order:
    image: project-order
    restart: always
    build:
      dockerfile: ./project-order/Dockerfile
      context: ../
    env_file:
        - .env
    container_name: project-order
    ports:
      - ${ORDER_PORT}:${ORDER_PORT}
    depends_on:
      - nacos
      - postgres


  # user module
  project-user:
    image: project-user
    restart: always
    build:
      dockerfile: ./project-user/Dockerfile
      context: ../
    env_file:
        - .env
    container_name: project-user
    ports:
      - ${USER_PORT}:${USER_PORT}
    depends_on:
      - nacos
      - postgres


  # gis module
  project-gis:
    image: project-gis
    restart: always
    build:
      dockerfile: ./project-gis/Dockerfile
      context: ../
    env_file:
        - .env
    container_name: project-gis
    ports:
      - ${GIS_PORT}:${GIS_PORT}
    depends_on:
      - nacos
      - postgres
      - project-geometry

  # geometry module
  project-geometry:
    image: project-geometry
    restart: always
    build:
      dockerfile: ./project-geometry/Dockerfile
      context: ../
    env_file:
        - .env
    container_name: project-geometry
    ports:
      - ${GEOMETRY_PORT}:${GEOMETRY_PORT}
    depends_on:
      - nacos

  # district module
  project-district:
    image: project-district
    restart: always
    build:
      dockerfile: ./project-district/Dockerfile
      context: ../
    env_file:
        - .env
    container_name: project-district
    ports:
      - ${DISTRICT_PORT}:${DISTRICT_PORT}
    depends_on:
      - nacos