1. 程式人生 > 其它 >基於Docker Compose 的Java Web環境釋出,Springboot專案快速部署

基於Docker Compose 的Java Web環境釋出,Springboot專案快速部署

技術標籤:docker composeNginxspringboot

一鍵部署基於SSL的web專案,實現https訪問。
文件目錄,文末附相關dockerfile配置
在這裡插入圖片描述

準備檔案

1、Docker Desktop Installer.exe
2、wsl_update_x64.msi(解決windos下Docker安裝啟動失敗問題:wsl 2 installation is incomplete)

安裝docker

雙擊執行Docker Desktop Installer.exe即可,安裝結束,重啟電腦,如果重啟後,docker提示啟動失敗,wsl2 未完成安裝,則安裝wsl_update_x64.msi即可。

安裝docker-compose

1、使用管理員許可權開啟power shell
2、執行以下命令,官方教程

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\Docker\docker-
compose.exe

等待安裝結束,執行命令查詢是否安裝成功

PS C:\Windows\system32> docker-compose --version
docker-compose version 1.27.4, build 40524192

編寫docker-compose.yml

version: "3"
services:
  jdk:
    build:
      context: ./services/jdk
      dockerfile: Dockerfile
    container_name: jdk
    environment:
- TZ=Asia/Shanghai networks: - default redis: build: context: ./services/redis dockerfile: Dockerfile container_name: redis ports: - "6379:6379" volumes: - ./services/redis/redis.conf:/etc/redis.conf:ro - /usr/local/yuri/data/redis:/data/:rw restart: always entrypoint: ["redis-server", "/etc/redis.conf"] environment: - TZ=Asia/Shanghai networks: - default nginx: build: context: ./services/nginx dockerfile: Dockerfile container_name: nginx ports: - "80:80" - "443:443" volumes: - /usr/local/yuri/www:/www/:rw - ./services/nginx/ssl:/ssl:rw - ./services/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - /usr/local/yuri/logs/nginx:/var/log/nginx/:rw environment: - TZ=Asia/Shanghai restart: always networks: - default mysql: image: mysql:5.7.28 container_name: mysql ports: - "3306:3306" volumes: - ./services/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro - /usr/local/yuri/data/mysql:/var/lib/mysql/:rw restart: always networks: - default environment: MYSQL_ROOT_PASSWORD: "123456" TZ: Asia/Shanghai app: build: context: ./services/app dockerfile: Dockerfile container_name: app restart: always ports: - "8080:8080" #volumes: # - /usr/local/cnzv/cnzv.jar:/app/cnzv.jar:ro environment: - JAVA_OPTS=-Xmx256M -Dspring.profiles.active=test -Duser.timezone=GMT+08 - TZ=Asia/Shanghai links: - redis depends_on: - jdk - nginx - redis - mysql networks: default:

執行構建命令

docker-compose build

執行啟動命令

docker-compose up -d 

開啟頁面檢視前後端是否正常

相關dockefile

app/dockerfile

FROM docker_jdk:latest
MAINTAINER caowenjun/496190712@qq.com
# 為Dockerfile中所有RUN、CMD、ENTRYPOINT、COPY和ADD指令設定工作目錄
RUN mkdir app
#根據自己定義的專案名稱進行修改
ADD cms-app.jar /app/cms-app.jar
# 在容器啟動的時候執行,作用於容器層,dockerfile裡有多條時只允許執行最後一條
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/cms-app.jar"]

jdk/dockerfile

# 基於cntos7,如果沒有這個映象那麼它會下載這個映象。
FROM centos:8
# 建立者(這個可以不寫)
MAINTAINER caowenjun/496190712@qq.com
# 為Dockerfile中所有RUN、CMD、ENTRYPOINT、COPY和ADD指令設定工作目錄
WORKDIR /usr
# 執行命令(這裡建立了一個目錄)
RUN mkdir /usr/local/java
# 和copy一樣,複製檔案到指定目錄,但是copy不能解壓,add自動解壓
ADD jdk-8u211-linux-x64.tar.gz /usr/local/java
# 重新命名(不知道檔名可以現在宿主機解壓後看一下)
RUN ln -s /usr/local/java/jdk1.8.0_211 /usr/local/java/jdk
# 設定環境變數
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
RUN java -version

mysql/dockerfile

nginx/dockerfile

FROM nginx
MAINTAINER caowenjun/496190712@qq.com
RUN mkdir web
COPY web /web
COPY nginx.conf /etc/nginx/nginx.conf
COPY ssl/bestavi/* /etc/nginx/
COPY ssl/cnzv/* /etc/nginx/
COPY ssl/caowenjun/* /etc/nginx/
# 複製前端程式碼
# COPY static-html-directory /usr/share/nginx/html
EXPOSE 80 443

redis/dockerfile

FROM hesens/redis
MAINTAINER caowenjun/496190712@qq.com
COPY redis.conf /usr/local/etc/redis/redis.conf
EXPOSE 6379
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

如有錯誤,請指正,如果幫到您了,請點贊。