基於Docker Compose 的Java Web環境釋出,Springboot專案快速部署
阿新 • • 發佈:2020-12-22
技術標籤: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" ]
如有錯誤,請指正,如果幫到您了,請點贊。