微服务项目本地Docker部署异常
·
问题说明
通过docker起的Nacos可以在本地调试环境成功注册服务。

但是用Maven将每个服务打包以后,通过docker拉起每个服务无法在Nacos中成功注册。

Docker容器编排
1.先启动Nacos和Mysql服务
#docker-compose.env.yml version: '3' services: mysql: image: mysql:8.0 container_name: quizplanet-mysql environment: MYSQL_ROOT_PASSWORD: CNUCIE123 TZ: Asia/Shanghai ports: - "3306:3306" volumes: - ./mysql-data:/var/lib/mysql - ./mysql-init:/docker-entrypoint-initdb.d restart: always networks: - mynetwork nacos: image: nacos/nacos-server:v2.4.2 container_name: quizplanet-nacos ports: - "8848:8848" - "8849:8849" - "9848:9848" - "9849:9849" volumes: - ./nacos-data:/home/nacos/data environment: MODE: standalone NACOS_AUTH_ENABLE: false # 关掉鉴权 NACOS_AUTH_TOKEN_ENABLED: false # 2.4+ 新增,显式禁掉 token PREFER_HOST_MODE: hostname TZ: Asia/Shanghai NACOS_CONSOLE_UI_ENABLED: true networks: - mynetwork networks: mynetwork: driver: bridge
2.再启动其余业务服务
#docker-compose.service.yml version: '3' services: service-user: container_name: quizplanet-user build: context: ./services/service-user dockerfile: Dockerfile ports: - "58000:8000" networks: - mynetwork restart: unless-stopped environment: - SPRING_PROFILES_ACTIVE=prod - TZ=Asia/Shanghai service-question: container_name: quizplanet-question build: context: ./services/service-question dockerfile: Dockerfile ports: - "9000:9000" networks: - mynetwork restart: unless-stopped environment: - SPRING_PROFILES_ACTIVE=prod - TZ=Asia/Shanghai service-ann: container_name: quizplanet-ann build: context: ./services/service-ann dockerfile: Dockerfile ports: - "9010:9010" networks: - mynetwork restart: unless-stopped environment: - SPRING_PROFILES_ACTIVE=prod - TZ=Asia/Shanghai service-wrong: container_name: quizplanet-wrong build: context: ./services/service-wrong dockerfile: Dockerfile ports: - "9020:9020" networks: - mynetwork restart: unless-stopped environment: - SPRING_PROFILES_ACTIVE=prod - TZ=Asia/Shanghai service-eng: container_name: quizplanet-eng build: context: ./services/service-eng dockerfile: Dockerfile ports: - "9030:9030" networks: - mynetwork restart: unless-stopped environment: - SPRING_PROFILES_ACTIVE=prod - TZ=Asia/Shanghai service-stat: container_name: quizplanet-stat build: context: ./services/service-stat dockerfile: Dockerfile ports: - "9040:9040" networks: - mynetwork restart: unless-stopped environment: - SPRING_PROFILES_ACTIVE=prod - TZ=Asia/Shanghai service-file: container_name: quizplanet-file build: context: ./services/service-file dockerfile: Dockerfile ports: - "9050:9050" networks: - mynetwork restart: unless-stopped environment: - SPRING_PROFILES_ACTIVE=prod - TZ=Asia/Shanghai gateway: container_name: quizplanet-gateway build: context: ./gateway dockerfile: Dockerfile ports: - "80:80" networks: - mynetwork restart: unless-stopped environment: - SPRING_PROFILES_ACTIVE=prod - TZ=Asia/Shanghai networks: mynetwork: external: true
DockerFile(以service-user为例)
FROM eclipse-temurin:21-jdk-jammy WORKDIR /app COPY target/service-user-0.0.1-SNAPSHOT.jar app.jar EXPOSE 8000 ENTRYPOINT ["java", "-jar", "/app/app.jar", "--spring.profiles.active=prod"]
applicatoin-prod.properties(以service-user为例)
spring.application.name=service-user server.port=8000 spring.cloud.nacos.server-addr=nacos:8848 # 数据源 spring.datasource.url=jdbc:mysql://mysql:3306/quizplanet_user?useSSL=false&serverTimezone=UTC&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=CNUCIE123 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # MyBatis mybatis.mapper-locations=classpath:mapper/user/*.xml mybatis.type-aliases-package=com.quizplanet.user.bean mybatis.configuration.map-underscore-to-camel-case=true mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
更多推荐



所有评论(0)