Docker部署前后端的實現(xiàn)步驟
一、Docker前置環(huán)境檢查
1. 查看所有容器
# 正在運行的容器 docker ps # 全部容器(運行+停止的,必看) docker ps -a
2. 查看本地鏡像
docker images
3. 查看網(wǎng)絡
docker network ls
4. 查看所需端口占用
# 看宿主機80/8080有沒有被占用 ss -tuln | grep -E '80|8080'
5. 清理舊容器常用命令
# 停止容器 docker stop 容器名/容器ID # 刪除容器 docker rm 容器名/容器ID # 刪除鏡像 docker rmi 鏡像名:標簽 docker rmi nginx:latest # 刪除網(wǎng)絡 docker network rm minikube
二、Docker前后端部署
1.容器部署流程
①. 先創(chuàng)建自定義網(wǎng)絡(固定?。?/p>
②. 啟動 MySQL(3308)
③. 啟動 3 個 Java 后端(8081、8082、8083)
④. 最后啟動 Nginx(8080)
2. 創(chuàng)建網(wǎng)絡(數(shù)據(jù)智能分析平臺)
docker network create data-platform-net
如果使用--network=host共用虛擬機的 IP、網(wǎng)卡、網(wǎng)絡棧可以不創(chuàng)建
3.MySQL容器構建與運行
①.創(chuàng)建MySQL本地目錄掛載
# 先創(chuàng)建目錄(/usr/local/mysql) mkdir -p /usr/local/mysql/data mkdir -p /usr/local/mysql/conf mkdir -p /usr/local/mysql/init
②.啟動MySQL容器
docker run -d \ --name mysql \ --network=host \ -e MYSQL_ROOT_PASSWORD=123456 \ -e TZ=Asia/Shanghai \ -e MYSQL_TCP_PORT=3308 \ -v /usr/local/mysql/data:/var/lib/mysql \ -v /usr/local/mysql/init:/docker-entrypoint-initdb.d \ -v /usr/local/mysql/conf:/etc/mysql/conf.d \ --restart=always \ mysql:8.0
docker run -d \ --name mysql \ --network data-platform-net \ -p 3308:3306 \ -e MYSQL_ROOT_PASSWORD=123456 \ -e TZ=Asia/Shanghai \ -v /usr/local/mysql/data:/var/lib/mysql \ -v /usr/local/mysql/init:/docker-entrypoint-initdb.d \ -v /usr/local/mysql/conf:/etc/mysql/conf.d \ --restart=always \ mysql:8.0
③.進入MySQL容器查看數(shù)據(jù)庫
# 進入 Docker 容器內的 MySQL 的標準命令 docker exec -it mysql mysql -uroot -p123456
④.設置root遠程權限問題
-- 1. 授權 root 可以從任何地址登錄(解決遠程權限問題) ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; -- 2. 刷新權限,立即生效 FLUSH PRIVILEGES;
⑤.本地電腦遠程連接
# 本地電腦連接,驗證成功 mysql -h192.168.242.128 -P3308 -uroot -p123456 --skip-ssl
4.Java 后端容器構建與運行
①.Dockerfile--qa_system
FROM eclipse-temurin:17-jammy # 編碼 ENV LANG=C.UTF-8 # 工作目錄 WORKDIR /qa_system # 拷貝jar COPY qa_system.jar . # 端口 EXPOSE 8081 # 啟動 ENTRYPOINT ["java", "-jar", "qa_system.jar"]
打包jdk17.tar.gz和qa_system.jar到/root/docker-project目錄下
②.構建qa_system鏡像
docker build -t qa_system-image .
③.構建運行qa_system容器
docker run -d \ --name qa_system \ --network=host \ --restart=always \ qa_system-image
①.Dockerfile--stock_tushare
FROM eclipse-temurin:17-jammy # 編碼 ENV LANG=C.UTF-8 # 工作目錄 WORKDIR /stock_tushare # 拷貝jar COPY stock_tushare.jar . # 端口 EXPOSE 8082 # 啟動 ENTRYPOINT ["java", "-jar", "stock_tushare.jar"]
打包jdk17.tar.gz和stock_tushare.jar到/root/docker-project目錄下
②.構建stock_tushare鏡像
docker build -t stock_tushare-image .
③.構建運行qa_system容器
docker run -d \ --name stock_tushare \ --network=host \ --restart=always \ stock_tushare-image
①.Dockerfile--jiekou
FROM eclipse-temurin:17-jammy # 編碼 ENV LANG=C.UTF-8 # 工作目錄 WORKDIR /jiekou # 拷貝jar COPY jiekou.jar . # 端口 EXPOSE 8083 # 啟動 ENTRYPOINT ["java", "-jar", "jiekou.jar"]
FROM centos:7 COPY jdk17.tar.gz /usr/local/ RUN tar -xzf /usr/local/jdk17.tar.gz -C /usr/local/ && rm /usr/local/jdk17.tar.gz ENV JAVA_HOME=/usr/local/jdk-17.0.10 ENV PATH=$JAVA_HOME/bin:$PATH ENV LANG=en_US.UTF-8 ENV LC_ALL=en_US.UTF-8 RUN mkdir -p /jiekou WORKDIR /jiekou COPY jiekou.jar . EXPOSE 8083 ENTRYPOINT ["java", "-jar", "jiekou.jar"]
打包jdk17.tar.gz和jiekou.jar到/root/docker-project目錄下
②.構建jiekou鏡像
docker build -t jiekou-image .
③.構建運行jiekou容器
docker run -d \ --name jiekou \ --network=host \ --restart=always \ jiekou-image
docker run -d \ --name jiekou \ --network data-platform-net \ -p 8083:8083 \ --restart=always \ jiekou-image
5.Nginx容器構建與運行
①.創(chuàng)建Nginx本地目錄掛載
mkdir -p /usr/local/SZTU-IAP/html mkdir -p /usr/local/SZTU-IAP/conf
②.主機模式
docker run -d \ --name nginx-SZTU-IAP \ -v /usr/local/SZTU-IAP/html:/usr/share/nginx/html \ -v /usr/local/SZTU-IAP/conf/nginx.conf:/etc/nginx/nginx.conf \ --network=host \ --restart=always \ nginx:1.20.2
③.端口映射模式
docker run -d \ --name nginx-SZTU-IAP \ -v /usr/local/SZTU-IAP/html:/usr/share/nginx/html \ -v /usr/local/SZTU-IAP/conf/nginx.conf:/etc/nginx/nginx.conf \ --network data-platform-net \ -p 8080:8080 \ nginx:1.20.2
三、多容器編排工具
①.編寫docker-compose.yml
version: '3.8'
services:
# 1. MySQL 8.0
mysql:
image: mysql:8.0
container_name: mysql
network_mode: host
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
TZ: Asia/Shanghai
MYSQL_TCP_PORT: 3308
volumes:
- /usr/local/mysql/data:/var/lib/mysql
- /usr/local/mysql/init:/docker-entrypoint-initdb.d
- /usr/local/mysql/conf:/etc/mysql/conf.d
# 2. QA 系統(tǒng) (8081)
qa_system:
image: qa_system-image
build:
context: .
dockerfile: Dockerfile
container_name: qa_system
network_mode: host
restart: always
# 3. 股票服務 (8082)
stock_tushare:
image: stock_tushare-image
build:
context: .
dockerfile: Dockerfile
container_name: stock_tushare
network_mode: host
restart: always
# 4. 接口服務 (8083)
jiekou:
image: jiekou-image
build:
context: .
dockerfile: Dockerfile
container_name: jiekou
network_mode: host
restart: always
# 5. Nginx 前端 (8080)
nginx:
image: nginx:1.20.2
container_name: nginx-SZTU-IAP
network_mode: host
restart: always
volumes:
- /usr/local/SZTU-IAP/html:/usr/share/nginx/html
- /usr/local/SZTU-IAP/conf/nginx.conf:/etc/nginx/nginx.conf②.一鍵啟動所有服務
docker-compose up -d --build
③.一鍵停止所有
docker-compose down
④.查看所有日志
docker-compose logs -f
四、注意
1.Docker注意事項
①.Docker國內加速鏡像站
# 寫入配置
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<'EOF'
{
"debug": true,
"experimental": false,
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.m.daocloud.io",
"https://lispy.org",
"https://docker-0.unsee.tech"
]
}
EOF
# 重啟docker生效
systemctl daemon-reload
systemctl restart docker# 驗證是否配置成功 docker info
②.容器運行底層結構

1.虛擬機啟動:分鐘級Docker 容器啟動:毫秒級
2.底層鏡像只下載 1 次,所有容器共享同一個底層
3.底層系統(tǒng)已經在硬盤里了,容器只是啟動一個進程,不是啟動一個完整操作系統(tǒng)
③.系統(tǒng)鏡像對比
centos:7 缺點:
- 自帶很多 Linux 工具(你 Java 根本不用)
- 自己解壓 JDK,容易路徑錯、版本錯
- 環(huán)境變量要手動配
- 冗余文件多
eclipse-temurin:17 優(yōu)點:
- 專為 Java 打造
- 只保留運行 Java 必需的最小系統(tǒng)
- JDK 官方預裝、環(huán)境變量自動配好
- 沒有多余垃圾文件
- 安全、穩(wěn)定、官方維護

2.MySQL注意事項
①.MySQL的root授權
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; UNINSTALL PLUGIN validate_password; SET PERSIST skip_ssl=ON;
②.查看MySQL容器日志
docker logs mysql
③MySQL導出數(shù)據(jù)庫sql
# 導出 qa_system mysqldump -uroot -p123456 -S/home/lanzebin/mysql.sock -B qa_system > qa_system.sql # 導出 stock mysqldump -uroot -p123456 -S/home/lanzebin/mysql.sock -B stock > stock.sql
④.刪除容器 + 清空數(shù)據(jù)
docker rm -f mysql rm -rf /usr/local/mysql/data/*
3.防火墻注意事項
①.防火墻端口開放
# 查看是否開機自啟 systemctl is-enabled firewalld # 關閉開機自啟 systemctl disable firewalld # 放行端口 firewall-cmd --add-port=8080/tcp --permanent # 重載配置 firewall-cmd --reload # 查看已放行端口 firewall-cmd --list-ports
到此這篇關于Docker部署前后端的實現(xiàn)步驟的文章就介紹到這了,更多相關Docker部署前后端內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Docker 部署 PostgreSQL數(shù)據(jù)庫的兩種方式
本文介紹了使用Docker部署PostgreSQL數(shù)據(jù)庫的兩種方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2025-07-07
docker-compose部署mysql數(shù)據(jù)庫完整步驟
Docker-Compose項目是Docker官方的開源項目,負責實現(xiàn)對Docker容器集群的快速編排,這篇文章主要給大家介紹了關于docker-compose部署mysql數(shù)據(jù)庫的完整步驟,需要的朋友可以參考下2024-05-05
Docker環(huán)境下的Apache NiFi安裝實踐及遇到問題解決方案
由于最近用到數(shù)據(jù)同步,故打算采用中間件工具來做數(shù)據(jù)同步,誰知第一步部署Apache NiFi環(huán)境就耽擱了好久,其中遇到一些問題,故記錄下來部署成功記錄,下面給大家詳細介紹Docker環(huán)境下的Apache NiFi安裝實踐及遇到問題解決方案,感興趣的朋友一起看看吧2025-05-05
Win10系統(tǒng)使用docker部署ragflow的實現(xiàn)
本文主要介紹了Win10系統(tǒng)使用docker部署ragflow的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-05-05
私有云存儲Minio Docker鏡像無法啟動,提示:Adding local Minio
使用Minio在本地搭建私有云存儲時出現(xiàn)無法啟動,查看日志頻繁輸出“Adding local Minio host to 'mc' configuration...”,然后停止了,本文給大家分享私有云存儲Minio Docker鏡像無法啟動,提示:Adding local Minio host to 'mc' configuration,感興趣的朋友一起看看吧2023-11-11

