win10 docker 部署微服務


編寫好項目后:

改寫application.yml

服務注冊:

 

 

 之前是這樣的

 

 

 改寫之后我改成了${EUREKA_URL} ,用這個變量替換了它,之前我部署的時候發現用本地的ip好像發現不了服務

路由:

server:
  port: 8090
  servlet:
    session:
      cookie:
        http-only: true

spring:
  application:
    name: sc-gateway-server
  redis:
    database: 0
    host: ${REDIS_HOST}
    port: 6379
    password: 123
  session:
    store-type: redis





zuul:
  sensitiveHeaders:
  #是否開啟重試功能
  retryable: true
  prefix: /api
  routes:
    spv-auth:
      path: /auth/**
      serviceId: spv-auth
      strip-prefix: false

gate:
  ignore:
    manageUrls: /auth/spv/login,

ribbon:
  max-auto-retries: 3
  max-auto-retries-next-server: 0

eureka:
  instance:
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: ${EUREKA_URL}

logging:
  level:
    org.springframework.cloud.gateway: debug


swagger.enabled: true

我的路由用到了redis,redis的host也弄成變量形式

登錄驗證:

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://${MYSQL_HOST}:3306/demo?useUnicode=true&characterEncoding=utf-8
    username: root
    password: q1w2e3r4
  jpa:
    show-sql: true
  application:
    name: spv-auth
  redis:
    database: 0
    host: ${REDIS_HOST}
    port: 6379
    password: 123
    jedis:
      pool:
        max-active: 8
  session:
    store-type: redis

server:
  port: 8099



eureka:
  client:
    serviceUrl:
      defaultZone: ${EUREKA_URL}

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 5000

mysql 和 redis 的host也弄成變量的形式

最后打包

 

 

 我沒有在項目里面寫Dockerfile 和編排,我把jar都復制到了另一個目錄

 

 

先拉取redis、 mysql:5.6 、java:8 鏡像

 

 

 

 

 

目錄里面是各種的jar和Dockerfile

 

 

 Dockerfile:

From java:8 
VOLUME /springcloud
ADD eureka-server-0.0.1-SNAPSHOT.jar /app.jar
EXPOSE 8761 #端口
ENTRYPOINT ["java","-jar","/app.jar"]

docker-compose.yml:

version: '3'


services:
    eureka-service:
        restart: on-failure
        build:
            context: eureka
            dockerfile: Dockerfile
        container_name: eureka
        ports:
            - "8761:8761"
        environment:
            EUREKA_URL: "http://172.19.0.1:8761/eureka/"
        networks:
            - eureka-net    


    gateway-service:
        build:
          context: gateway
          dockerfile: Dockerfile
        container_name: gateway
        depends_on:
            - mysql
            - redis
            - eureka-service
            - auth-service
        ports:
            - "8090:8090"
        environment:
            EUREKA_URL: "http://172.19.0.1:8761/eureka/"
            REDIS_HOST: "172.19.0.1"
        networks:
            - eureka-net     
   
      
    auth-service:
        build:
            context: auth
            dockerfile: Dockerfile
        container_name: auth
        depends_on:
            - mysql
            - redis
            - eureka-service
        ports:
            - "8099:8099"
        environment:
            EUREKA_URL: "http://172.19.0.1:8761/eureka/"
            REDIS_HOST: "172.19.0.1"
            MYSQL_HOST: "172.19.0.1"
        networks:
            - eureka-net      
      
      
    mysql:
        image: mysql:5.6
        ports:
            - "3306:3306"
        environment:
            MYSQL_ROOT_PASSWORD: q1w2e3r4
            MYSQL_DATABASE: demo
        container_name: test-mysql
        restart: always
        volumes:
            - "./mysql/db/:/var/lib/mysql"
        command: mysqld --lower_case_table_names=1 --default-authentication-plugin=mysql_native_password
        networks:
            - eureka-net


    redis:
        image: redis:latest
        ports:
            - "6379:6379"
        container_name: test-redis
        restart: always
        command: redis-server --requirepass 123 --appendonly yes
        networks:
            - eureka-net

networks:
  eureka-net:
    driver: bridge
究竟 EUREKA_URL、REDIS_HOST、MYSQL_HOST 是怎么確定的呢

我把他們都弄在了一個網絡端里面了,因為我也是剛剛學習docker沒多久,所以我就這樣弄了

我在docker里面創建了一個網絡端

docker network create --subnet=172.18.0.0/24 eureka-net

 

一開始的時候 :EUREKA_URL、REDIS_HOST、MYSQL_HOST  我用的是127.0.0.1   em........

運行:docker-compose  up --build

很明顯只啟動了eureka、redis和mysql

然后我查看了一下網絡段看看情況

docker network ls 

 

 

 

em......它好像又自動創建了一個網絡段,查看一下信息

docker network inspect dockercompose_eureka-net

 

 

 然后修改docker-compose.yml

把127.0.0.1改為172.19.0.1

 就變成這樣了,

重新拉取鏡像

#先移除
docker-compose rm

#再拉取
docker-compose up --bulid 

 

 

 好像getway是紅字 但是沒有報錯信息 看一下注冊服務注冊了沒有

 

 

 好像可以了。

連接一下redis和mysql

 

 

 

 

 

 導入表

 

 

 

 

 

 運行本地前端

 

 

 

 

 

 

 

 

 進來了

看一下登錄注冊模塊的運行日志

 

 

docker logs -f b923813dfaeb 

 

 沒得問題了,看看其他的方式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM