您好,登錄后才能下訂單哦!
今天小編給大家分享一下docker怎么搭建nacos+nginx+mysql+redis+springboot項目的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
請提前安裝docker和docker-compose并自行配置鏡像加速。 提前說明:我的整個項目搭建其實是分的兩次,第一次部署時只有:nginx+mysql+redis+springboot項目,nacos是后期添加進去自娛自樂的。
A.docker-compose.yml文件
version: "3" services: nginx: # 服務名稱,用戶自定義 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的文件調用的權限問題 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: . # 表示以當前目錄下的Dockerfile開始構建鏡像 ports: - 81:81 depends_on: # 依賴與mysql、redis,其實可以不填,默認已經表示可以 - 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: # 設置環境變量,相當于docker run命令中的-e - JVM_XMS=512m - JVM_XMX=512m - JVM_XMN=128m #- MODE=standalone #單機版 ports: - "8848:8848" env_file: # 集群配置文件 - /root/nacos1/nacos-hostname.env restart: always depends_on: - mysql
B.springboot配置(自己的項目)
配置中的mysql和redis配置都是用的服務名而不是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 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一個連接在池中最小生存的時間,單位是毫秒 minEvictableIdleTimeMillis: 30000 validationQuery: select 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false # 打開PSCache,并且指定每個連接上PSCache的大小 poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 # 配置監控統計攔截的filters,去掉后監控界面sql無法統計,'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 #連接池最大連接數(使用負值表示沒有限制) max-idle: 8 #連接池中的最大空閑連接 max-wait: -1s #連接池最大阻塞等待時間(使用負值表示沒有限制) 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項目并命名為配置中的服務名
E.在對應目錄下創建文件夾或文件
- /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:端口,因為nginx和nacos在同一個網絡下,這里可以用服務名訪問 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的數據庫信息
#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
最后的目錄結構
docker-compose up -d mysql
F. 由于我的nacos是后期添加的,所以可以提前在mysql容器中添加好nacos數據庫再啟動(如果你沒有數據庫請提前添加)
啟動
docker-compose up
停止
docker-compose down
以上就是“docker怎么搭建nacos+nginx+mysql+redis+springboot項目”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。