備案 網(wǎng)站 漏接 電話企業(yè)網(wǎng)站是什么
目錄
1、下載與配置 Docker
1.1 docker下載(這里使用的是Ubuntu,Centos命令可能有不同)
1.2 配置 Docker 代理對象
2、打包當(dāng)前 Java 項(xiàng)目
3、進(jìn)行編寫?DockerFile,并將對應(yīng)文件傳輸?shù)?Linux 中
3.1 編寫 dockerfile 文件
3.2 使用 WinSCP 進(jìn)行兩端的文件傳輸
4、進(jìn)行創(chuàng)建鏡像,運(yùn)行容器,并加入到同一網(wǎng)絡(luò)中
4.1 創(chuàng)建鏡像
4.2 運(yùn)行容器
4.3 統(tǒng)一網(wǎng)絡(luò)
4.4 使用 DockerCompose 進(jìn)行部署項(xiàng)目(自行了解)
5、測試當(dāng)前項(xiàng)目的接口,是否能正確訪問

前言:
📜置頂有 Docker 的最全最易懂的配套 pdf 文件
搜索鏡像的網(wǎng)站(推薦):Docker DocsDocker Documentation is the official Docker library of resources, manuals, and guides to help you containerize applications.
https://docs.docker.com/
1、下載與配置 Docker
1.1 docker下載(這里使用的是Ubuntu,Centos命令可能有不同)
以下命令,默認(rèn)不是 root 用戶操作,若是,可去除 sudo 命令前綴
更新軟件包索引:
sudo apt update
安裝必要的依賴項(xiàng)(如果需要的話):
sudo apt install apt-transport-https ca-certificates curl software-properties-common
添加Docker的官方GPG密鑰(如果從官方倉庫安裝):
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
設(shè)置Docker的穩(wěn)定版?zhèn)}庫:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
再次更新軟件包索引:
sudo apt update
安裝Docker CE:
sudo apt install docker-ce docker-ce-cli containerd.io
驗(yàn)證安裝:
sudo docker --version
啟動Docker服務(wù):
sudo systemctl start docker
設(shè)置Docker開機(jī)自啟動(可選):
sudo systemctl enable docker
1.2 配置 Docker 代理對象
回到 ~ 主目錄,進(jìn)入?/etc/docker/daemon.json 配置文件,vim 將以下高亮的信息填入其中
# 將內(nèi)容寫入 /etc/docker/daemon.json 文件,root 用戶可以去掉 sudo
# 配置 Docker 鏡像,使用多個鏡像源來提高鏡像下載速度
echo '{"registry-mirrors": ["https://proxy.1panel.live","https://docker.1ms.run","https://docker.ketches.cn"]
}' | sudo tee /etc/docker/daemon.json# 重啟 Docker 服務(wù)以使配置生效
sudo systemctl restart docker
2、打包當(dāng)前 Java 項(xiàng)目
在 maven 中,先 clean 后 package 打包
這樣,就能得到項(xiàng)目中對應(yīng)模塊的 .jar 包
3、進(jìn)行編寫?DockerFile,并將對應(yīng)文件傳輸?shù)?Linux 中
Window 和 Linux 之間的文件傳輸軟件下載地址:
文件傳輸工具WinSCP下載安裝教程_winscp安裝教程-CSDN博客https://blog.csdn.net/qq_26383975/article/details/120220823
3.1 編寫 dockerfile 文件
FROM openjdk:17-jdkARG APP_PATH=/optWORKDIR $APP_PATH# Copy Application
COPY auth.jar $APP_PATH/auth.jar
RUN mkdir logsENV JAVA_OPTS="-Xms512m -Xmx512m -XX:-HeapDumpOnOutOfMemoryError" \SPRING_PROFILES_ACTIVE=localEXPOSE 9313# 指定docker容器啟動時運(yùn)行jar包
#ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Xmx768m","-jar","/opt/data-annotation.jar","--spring.profiles.active=dev"]
CMD java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /opt/auth.jar
以上文件大致結(jié)構(gòu)解釋(其他以外的配置根據(jù)自己需求進(jìn)行添加):
3.2 使用 WinSCP 進(jìn)行兩端的文件傳輸
注意:運(yùn)行容器的時候盡量不要使用 root 權(quán)限的用戶進(jìn)行操作,減少安全風(fēng)險
在此之前,若以 root 的身份進(jìn)行操作文件傳輸軟件,需要先啟用 ssh 權(quán)限:
在 Ubuntu 中啟用 root 用戶的遠(yuǎn)程登錄權(quán)限_ubuntu root遠(yuǎn)程登錄-CSDN博客https://blog.csdn.net/heromps/article/details/144549653然后進(jìn)行切換到 root 用戶,并更改密碼:
新安裝的Ubuntu系統(tǒng)中默認(rèn)的root用戶密碼是多少,怎么修改?_ubuntu22.04默認(rèn)密碼-CSDN博客https://blog.csdn.net/Dreamhai/article/details/109764502在 WinSCP 中以 root 進(jìn)行登錄:
傳輸相關(guān)文件,并根據(jù) dockerfile 信息,將其 .jar 包與 dockerfile 建立在同一個目錄下:
4、進(jìn)行創(chuàng)建鏡像,運(yùn)行容器,并加入到同一網(wǎng)絡(luò)中
4.1 創(chuàng)建鏡像
根據(jù) dockerfile 創(chuàng)建對應(yīng)的鏡像,這里是在 auth 目錄下進(jìn)行創(chuàng)建(命令最后的 . 是表示當(dāng)前目前下,不能省略)
docker build -t auth:1.0 -f Dockerfile-auth .
陸續(xù)將其他模塊的鏡像給創(chuàng)建好:
4.2 運(yùn)行容器
這里是運(yùn)行 anth 模塊的容器
docker run -d -p 9313:9313 --name exam_auth 3ddbf5bc0dae
陸續(xù)將其他模塊的容器運(yùn)行起來:
4.3 統(tǒng)一網(wǎng)絡(luò)
若當(dāng)前 docker 中沒有自定義網(wǎng)絡(luò),可以創(chuàng)建一個,這里我已經(jīng)創(chuàng)建了
docker network create [OPTIONS] NETWORK_NAME
然后將這些容器依次加入到這個自定義的網(wǎng)絡(luò)中
前者 exam_net 是當(dāng)前的網(wǎng)絡(luò)名,后者是需要加入進(jìn)來的容器名
docker network connect exam_net exam_auth
查看當(dāng)前網(wǎng)絡(luò)中的容器是否都加入了進(jìn)來
inspect 后面填入當(dāng)前的網(wǎng)絡(luò) ID或名稱
docker network inspect bea8eac2916b
4.4 使用 DockerCompose 進(jìn)行部署項(xiàng)目(自行了解)
前提:目前流行這種做法,因?yàn)楦雍啽?#xff0c;不用像上面 4.1、4.2、4.3 繁瑣
使用Docker和DockerCompose進(jìn)行java項(xiàng)目部署_dockercompose部署java項(xiàng)目-CSDN博客https://blog.csdn.net/qq_45854695/article/details/139643245
可以在一個 compose 中配置多個容器的信息(當(dāng)然,使用 compose 的話其他的 dockerfile 內(nèi)容也是要有一定變化的,畢竟前者可以簡化后者),之后只需要運(yùn)行一行命令即可容器創(chuàng)建、運(yùn)行并統(tǒng)一網(wǎng)絡(luò)
docker-compose -f docker-compose-dev.yml up -d
5、測試當(dāng)前項(xiàng)目的接口,是否能正確訪問
前提:
在測試接口前,需要保證打包前原項(xiàng)目中的 .yml 文件中 local 的 ip (這里mysql 和 redis 等一些 ip 看情況進(jìn)行更改)是否設(shè)置為當(dāng)前服務(wù)器的 ip ,如果 ip 不一致,之前進(jìn)行打包的 .jar 包進(jìn)行訪問時會失敗
先查看對應(yīng)服務(wù)的日志,查看是否正常運(yùn)行
docker logs [OPTIONS] CONTAINER
這里使用 Apipost 進(jìn)行訪問 auth 登錄接口,可見接口訪問成功,即項(xiàng)目已部署成功(這里的 ip 是服務(wù)器的 ip,而端口是項(xiàng)目對應(yīng)服務(wù)的端口)