溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

docker怎么搭建nacos+nginx+mysql+redis+springboot項(xiàng)目

發(fā)布時間:2022-03-29 13:40:45 來源:億速云 閱讀:364 作者:iii 欄目:大數(shù)據(jù)

今天小編給大家分享一下docker怎么搭建nacos+nginx+mysql+redis+springboot項(xiàng)目的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

請?zhí)崆鞍惭bdocker和docker-compose并自行配置鏡像加速。 提前說明:我的整個項(xiàng)目搭建其實(shí)是分的兩次,第一次部署時只有:nginx+mysql+redis+springboot項(xiàng)目,nacos是后期添加進(jìn)去自娛自樂的。

A.docker-compose.yml文件

version: "3"
services:
  nginx: # 服務(wù)名稱,用戶自定義
    image: nginx:latest  # 鏡像版本
    ports:
      - 80:80  # 暴露端口
    volumes: # 掛載
      - /root/nginx/html:/usr/share/nginx/html
      - /root/nginx/nginx.conf:/etc/nginx/nginx.conf
    privileged: true # 這個必須要,解決nginx的文件調(diào)用的權(quán)限問題
  mysql:
    image: mysql:5.7.27
    ports:
      - 3306:3306
    environment: # 指定用戶root的密碼
      - MYSQL_ROOT_PASSWORD=
  redis:
    ports:
      - 6379:6379
    image: redis:latest
  vueblog:
    image: vueblog:latest
    build: . # 表示以當(dāng)前目錄下的Dockerfile開始構(gòu)建鏡像
    ports:
      - 81:81
    depends_on: # 依賴與mysql、redis,其實(shí)可以不填,默認(rèn)已經(jīng)表示可以
      - mysql
      - redis


  nacos1:
    hostname: nacos1
    container_name: nacos1
    image: nacos/nacos-server:latest
    volumes:
      # 需要添加mysql8的插件
      #- ./nacos/plugins/mysql/:/home/nacos/plugins/mysql/
      # 把日志文件映射出來
      - /root/nacos1:/home/nacos/logs
      # 把配置文件映射出來
      - /root/nacos1/custom.properties:/home/nacos/init.d/custom.properties

    environment: # 設(shè)置環(huán)境變量,相當(dāng)于docker run命令中的-e
      - JVM_XMS=512m
      - JVM_XMX=512m
      - JVM_XMN=128m
      #- MODE=standalone   #單機(jī)版
    ports:
      - "8848:8848"
    env_file:
      # 集群配置文件
      - /root/nacos1/nacos-hostname.env
    restart: always
    depends_on:
      - mysql

B.springboot配置(自己的項(xiàng)目)

 配置中的mysql和redis配置都是用的服務(wù)名而不是ip地址

server:
  port: 81


spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB
  profiles:
    active: dev
  # mysql 配置
  datasource:
      url: jdbc:mysql://mysql:3306/blog4?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
      username: 
      password: 
#      schema: classpath:springbootsecurityauth.sql
      sql-script-encoding: utf-8
      initialization-mode: always
      driver-class-name: com.mysql.cj.jdbc.Driver
      type: com.alibaba.druid.pool.DruidDataSource
      # 初始化大小,最小,最大
      initialSize: 1
      minIdle: 3
      maxActive: 20
     # 配置獲取連接等待超時的時間
      maxWait: 60000
      # 配置間隔多久才進(jìn)行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # 配置一個連接在池中最小生存的時間,單位是毫秒
      minEvictableIdleTimeMillis: 30000
      validationQuery: select 'x'
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      # 打開PSCache,并且指定每個連接上PSCache的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      # 配置監(jiān)控統(tǒng)計攔截的filters,去掉后監(jiān)控界面sql無法統(tǒng)計,'wall'用于防火墻 ,slf4j
      filters: stat,wall,slf4j
      # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

  redis:
    database: 6
    host: redis
    port: 6379
    timeout: 5000s  # 連接超時時長(毫秒)
    jedis:
      pool:
        max-active: 20 #連接池最大連接數(shù)(使用負(fù)值表示沒有限制)
        max-idle: 8  #連接池中的最大空閑連接
        max-wait: -1s #連接池最大阻塞等待時間(使用負(fù)值表示沒有限制)
        min-idle: 0  #連接池中的最小空閑連接
    password:  #rootroot

C.Dockerfile文件

FROM java:8
EXPOSE 81
ADD vueblog.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java", "-jar", "/app.jar"]

 D.打包springboot項(xiàng)目并命名為配置中的服務(wù)名

E.在對應(yīng)目錄下創(chuàng)建文件夾或文件

      - /root/nginx/html
      - /root/nginx/nginx.conf

#user  root;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

   #這里配置nacos的ip:端口,因?yàn)閚ginx和nacos在同一個網(wǎng)絡(luò)下,這里可以用服務(wù)名訪問
   upstream nacos {
        server nacos1:8848 weight=1 max_fails=2 fail_timeout=10s;
        #server nacos2:8848 weight=1 max_fails=2 fail_timeout=10s;
        #server nacos3:8848 weight=1 max_fails=2 fail_timeout=10s;
    }

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html/front;
            try_files $uri $uri/ /index.html last; # 別忘了這個哈
            index  index.html index.htm;
        }

       location /admin {
	    alias /usr/share/nginx/html/admin;
	    expires  1d;
	    index index.html;
	    autoindex on;
        }

        location /nacos {
            proxy_pass   http://nacos;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header REMOTE-HOST $remote_addr;
            add_header X-Cache $upstream_cache_status;
            add_header Cache-Control no-cache;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

       - /root/nacos1
      # 把配置文件映射出來
      - /root/nacos1/custom.properties

#spring.security.enabled=false
#management.security=false
#security.basic.enabled=false
#nacos.security.ignore.urls=/**
#management.metrics.export.elastic.host=http://localhost:9200
# metrics for prometheus
management.endpoints.web.exposure.include=*

# metrics for elastic search
#management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200

# metrics for influx
#management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management.metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true

 - /root/nacos1/nacos-hostname.env

配置nacos的數(shù)據(jù)庫信息

#nacos dev env
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848
MYSQL_SERVICE_HOST=mysql
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=
MYSQL_SERVICE_PASSWORD=
JVM_XMS=512m
JVM_XMX=512m
JVM_XMN=256m
JVM_MS=64m
JVM_MMS=128m

 最后的目錄結(jié)構(gòu)

docker怎么搭建nacos+nginx+mysql+redis+springboot項(xiàng)目

先把mysql實(shí)例運(yùn)行起來(千萬不要直接docker-compose up -d把所有的實(shí)例都運(yùn)行起來)

docker-compose up -d mysql

F. 由于我的nacos是后期添加的,所以可以提前在mysql容器中添加好nacos數(shù)據(jù)庫再啟動(如果你沒有數(shù)據(jù)庫請?zhí)崆疤砑樱?/p>

啟動

docker-compose up

停止

docker-compose down

以上就是“docker怎么搭建nacos+nginx+mysql+redis+springboot項(xiàng)目”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI