用docker一鍵部署前后端分離項(xiàng)目的詳細(xì)流程
#重命名 mv Dockerfile_ruoyi-admin Dockerfile 4)ruoyi-admin為鏡像名稱,開始制作鏡像 docker build -t ruoyi-admin .
一、搭建局域網(wǎng)
1.1、介紹前后端項(xiàng)目搭建
需要4臺(tái)服務(wù)器,在同一個(gè)局域網(wǎng)中
1.2、操作
# 搭建net-ry局域網(wǎng),用于部署若依項(xiàng)目 net-ry:名字 docker network create net-ry --subnet=172.68.0.0/16 --gateway=172.68.0.1 #查看 docker network ls
能不能訪問分為2種情況:
一、如果項(xiàng)目部署完上線了,外部不能訪問內(nèi)部
二、部署的時(shí)候是應(yīng)該能訪問的,需要看Mysql等是否安裝好,防火墻應(yīng)該關(guān)閉,來調(diào)試問題
#查看防火墻狀態(tài) systemctl status firewalld #關(guān)閉防火墻 systemctl stop firewalld #啟動(dòng)docker systemctl restart docker
# 注意1:關(guān)閉宿主機(jī)的防火墻,否者容器內(nèi)部的MySQL、redis等服務(wù),外部訪問不了;開放端口3306、6379端口也沒用。
# 注意2:關(guān)閉防火墻后必須重啟docker,否者出現(xiàn)如下錯(cuò)誤
docker: Error response from daemon: driver failed programming external connectivity on endpoint ruoyi-admin (399a34630e6ef8e4ed7cf20d46b9654c8d535d0fe44ceadebf8bd605d3da35b8): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8080 -j DNAT --to-destination 172.68.0.4:8080 ! -i br-c34635070c6f: iptables: No chain/target/match by that name.
二、安裝redis
#創(chuàng)建兩個(gè)目錄 mkdir -p /data/redis/{conf,data} # cd /data/redis/ ll cd conf
進(jìn)入剛剛創(chuàng)建的conf目錄,上傳文件
#上傳redis.conf文件到/data/redis/conf文件夾中
# bind 0.0.0.0 充許任何主機(jī)訪問
# daemonize no 因?yàn)橛玫氖侨萜鳎琑edis裝在容器里面,不影響輸入命令
# requirepass sasa 用戶密碼sasaredis.conf修改
1. 允許redis外地連接
#bind 127.0.0.1改成為
bind 0.0.0.02. 開啟redis驗(yàn)證(可選)
requirepass sasa3. 開啟redis數(shù)據(jù)持久化(可選)
appendonly yes
docker run -itd --name zking-redis -p 6379:6379 \ -v /data/redis/conf/redis.conf:/etc/redis/redis.conf \ -v /data/redis/data:/data \ --privileged=true --restart=always \ --network net-ry redis \ redis-server /etc/redis/redis.conf
id啟動(dòng) 容器不進(jìn)入
zking-redis 名字
-p 6379:6379 \ 映射端口
-v 掛載
-v /data/redis/data:/data \ 緩存數(shù)據(jù)
--privileged=true --restart=always \ 給最高權(quán)限1. --privileged=true :讓容器root用戶擁有最高權(quán)限,否則可能會(huì)出現(xiàn)權(quán)限不夠錯(cuò)誤
2. redis-server /etc/redis/redis.conf:容器啟動(dòng)時(shí)執(zhí)行的命令及讀取的配置
3. redis-6.2.6.tar.gz壓縮包中找到redis.conf官方配置文件
4. 在hub.docker.com中找到啟動(dòng)redis方式
測(cè)試
#進(jìn)入容器 docker exec -it zking-redis /bin/bash root@ec98cd3af83e:/data# whereis redis-cli redis-cli: /usr/local/bin/redis-cli root@ec98cd3af83e:/data# cd /usr/local/bin root@ec98cd3af83e:/usr/local/bin# ls docker-entrypoint.sh redis-benchmark redis-check-rdb redis-sentinel gosu redis-check-aof redis-cli redis-server root@ec98cd3af83e:/usr/local/bin# redis-cli 127.0.0.1:6379> ping PONG 127.0.0.1:6379>
三、安裝Mysql
#退出程序 exit #退出容器 Ctrl+P+Q # 1.創(chuàng)建文件夾 mkdir -p /data/mysql/{conf,data}
#進(jìn)入conf cd /data/mysql/conf/ # 2.上傳my.cnf文件到/data/mysql/conf文件夾中 (可以將my2.cnf修改好在Linux中重命名為my.cnf) mv my2.cnf my.cnf
修改官方my.cnf
#運(yùn)行mysql5.7,注意有單獨(dú)的mysql鏡像 docker run --name=mysql1 -d mysql/mysql-server:5.7 #進(jìn)入容器查看/etc/my.cnf文件,修改my.cnf文件,讓其支持中文
查看mysql數(shù)據(jù)保存位置
cd /var/lib/mysql>
1. 設(shè)置密碼
-e MYSQL_ROOT_PASSWORD=sasa:設(shè)置root的密碼
3.啟動(dòng)MySQL容器服務(wù)
docker run -d --name zking-mysql --network net-ry \ -v /data/mysql/conf/my.cnf:/etc/my.cnf \ -v /data/mysql/data:/var/lib/mysql \ --privileged=true --restart=always \ -e MYSQL_ROOT_PASSWORD=sasa -p 3306:3306 \ mysql/mysql-server:5.7
等待時(shí)間有點(diǎn)久
檢查
docker ps
遠(yuǎn)程連接
# 進(jìn)入容器 docker exec -it zking-mysql /bin/bash # 登錄 mysql -u root -p; # 創(chuàng)建用戶及授權(quán) grant all privileges on *.* to root@'%' identified by 'sasa' with grant option; # 刷新權(quán)限 flush privileges;
注意:0- 1-工具原因,復(fù)制進(jìn)去記得刪除
工具測(cè)試
四、部署后端服務(wù)
4.1、創(chuàng)建數(shù)據(jù)庫
運(yùn)行sql文件
4.2、使用Dockerfile自定義鏡像
# 1.構(gòu)建Dockerfile鏡像 1)切換到家目錄 cd ~ #新建文件夾 mkdir ruoyi-admin #切進(jìn)去 cd ruoyi-admin 2)上傳ruoyi-admin.jar到Dockerfile_ruoyi-admin文件所在目錄
測(cè)試
docker images #運(yùn)行容器 docker run -itd --name ruoyi-admin --network net-ry -p 80 80:8080 ruoyi-admin docker ps #進(jìn)入容器 docker exec -it ruoyi-admin /bin/bash #查看日志 cd /home/ruoyi/logs/ ls -l
測(cè)試
五、前端部署
5.1、nginx部署
分析nginx.conf
5.2、具體步驟
# 1.創(chuàng)建目錄 mkdir -p /data/nginx/{conf,html} # 2.切換到conf目錄 cd /data/nginx/conf/ #3上傳nginx.conf至/data/nginx/conf文件夾中
運(yùn)行啟動(dòng)容器
docker run -itd --name zking-nginx --network net-ry -p 80:80 \ -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /data/nginx/html:/usr/share/nginx/html \ --privileged=true --restart=always \ nginx
位置解釋
切換目錄
cd /data/nginx/html/
上傳項(xiàng)目
解壓
#下載解壓命令 yum install -y unzip #輸入解壓命令dist.zip壓縮包名字 unzip dist.zip
測(cè)試
去瀏覽器輸入ip
因?yàn)榍岸耸?0所有后面不需要帶端口,直接IP就可以了
點(diǎn)擊登錄就成功了
以上就是用docker一鍵部署前后端分離項(xiàng)目的詳細(xì)流程的詳細(xì)內(nèi)容,更多關(guān)于docker部署前后端分離項(xiàng)目的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
3分鐘用Docker搭建一個(gè)Minecraft服務(wù)器
這篇文章主要介紹了3分鐘用Docker搭建一個(gè)Minecraft服務(wù)器的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11CentOS7如何修改Docker鏡像默認(rèn)存儲(chǔ)位置
這篇文章主要介紹了CentOS7如何修改Docker鏡像默認(rèn)存儲(chǔ)位置問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11Next.js?Docker鏡像私有部署從零實(shí)現(xiàn)
這篇文章主要為大家介紹了Next.js?Docker鏡像私有部署從零實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12Docker安裝ClickHouse并初始化數(shù)據(jù)測(cè)試
clickhouse作為現(xiàn)在流行的數(shù)據(jù)分析數(shù)據(jù)庫,非常熱門,docker如何安裝ClickHouse,很多朋友并不是很明白,今天小編抽空給大家分享一篇教程關(guān)于Docker安裝ClickHouse并初始化數(shù)據(jù)測(cè)試的問題,一起看看吧2021-06-06Docker?Desktop?啟用?Kubernetes?失敗后處理方案
?在setting -> Kubernetes 中,選中 Enable Kubernetes 后,長時(shí)間顯示 Starting ...? ,在Images中顯示幾個(gè)自動(dòng)下載的鏡像后,顯示 Start Kubernetes failed,這篇文章主要介紹了Docker?Desktop啟用Kubernetes失敗后處理方法,需要的朋友可以參考下2023-08-08使用portainer連接遠(yuǎn)程docker的教程
Portainer是一個(gè)輕量級(jí)的docker環(huán)境管理UI,可以用來管理docker宿主機(jī)和docker swarm集群,這篇文章主要介紹了使用portainer連接遠(yuǎn)程docker的方法,需要的朋友可以參考下2020-03-03docker下遷移elasticsearch問題以及解決方案
文章描述了如何將Elasticsearch數(shù)據(jù)從一個(gè)服務(wù)器遷移到另一個(gè)服務(wù)器,包括數(shù)據(jù)掛載、版本一致性、啟動(dòng)命令的匹配以及可能遇到的權(quán)限和節(jié)點(diǎn)故障問題的解決方法2024-11-11