通過(guò)部署docker學(xué)習(xí)過(guò)程中產(chǎn)生的經(jīng)驗(yàn)寫(xiě)下本文,本文完成前端和后端代碼部署,網(wǎng)上的教程對(duì)小白很不友好,寫(xiě)下本文方便自己以后自己查閱并分享給大家讓大家盡量少踩坑,可以順利學(xué)會(huì)docker并成功部署項(xiàng)目
注:服務(wù)器系統(tǒng)使用CentOS7,遠(yuǎn)程工具使用寶塔,宿主機(jī)(服務(wù)器)使用的端口需要在安全組開(kāi)放后才可以訪問(wèn),本文所有代碼如果不了解盡量復(fù)制
一:環(huán)境安裝
1.了解Docker
因?yàn)槲覀兪鞘褂胐ocker部署,所以需要首先大概了解docker,docker是一個(gè)輕量化的容器,它有著許多優(yōu)點(diǎn),輕量化,非常好的隔離性等等,下面是一張docker的架構(gòu)圖
2.安裝Docker
因?yàn)槲覀兪巧暇€項(xiàng)目,首先需要一個(gè)服務(wù)器,通過(guò)遠(yuǎn)程連接工具連接到云服務(wù)器,以下指令都在服務(wù)器終端執(zhí)行
- 為確保環(huán)境一致,先執(zhí)行指令移除以前docker相關(guān)包
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 配置yum源,因?yàn)閲?guó)外的資源下載很慢甚至無(wú)法訪問(wèn),所以我們配置到阿里云的鏡像源加速下載
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 重新安裝docker并啟動(dòng)
sudo yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable docker --now
?二:部署前端環(huán)境
前端代碼是通過(guò)ngxin進(jìn)行訪問(wèn)的,nginx是一個(gè)高性能的HTTP和方向代理web服務(wù)器,所以我們先創(chuàng)建nginx容器
1.拉取nginx鏡像
默認(rèn)下載最新版本
docker pull nginx #下載最新版
2.配置宿主機(jī)(云服務(wù)器)的目錄
- 打開(kāi)服務(wù)器的寶塔面板,進(jìn)入文件,在服務(wù)器根目錄新建data目錄
- ?進(jìn)入data目錄,新建conf和html目錄
- ?先進(jìn)入html目錄,上傳本地的前端代碼到云服務(wù)器上
- ?再進(jìn)入conf目錄,上傳本地的nginx.conf文件到云服務(wù)器上
- ?防止有人找不到本地的前端代碼,這里附上我自己的,可以參考一下
將以上步驟都完成后
3.創(chuàng)建并啟動(dòng)nginx容器
- 我們的配置文件是訪問(wèn)80端口,所以我們將宿主機(jī)的8080端口與容器的80端口進(jìn)行映射,然后再選擇掛載目錄,掛載的目錄就是我們剛才創(chuàng)建的目錄
注:一般情況下,在掛載目錄時(shí)會(huì)自動(dòng)創(chuàng)建不存在的目錄。如果報(bào)錯(cuò)信息提示找不到目錄,還是老老實(shí)實(shí)自己創(chuàng)建然后再進(jìn)行掛載
docker run -d -p 8080:80 \
-v /data/html:/usr/share/nginx/html:ro \
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf \
--name mynginx \
nginx
- 查看當(dāng)前容器是否創(chuàng)建成功
docker ps -a #查看當(dāng)前所有容器
docker ps #查看當(dāng)前正在運(yùn)行的容器
4.部署前端代碼
- 到寶塔面板文件中修改nginx.conf文件
- 在終端重啟容器使配置生效,容器ID就是下圖畫(huà)橫線的,每個(gè)人不一樣,自行查看
docker restart <容器ID>
- ?然后通過(guò)云服務(wù)器的ip加你所映射的端口,我們之前是映射的8080端口,通過(guò)這個(gè)端口進(jìn)行訪問(wèn)
這個(gè)時(shí)候前端代碼就部署完成了?
三:部署后端環(huán)境?
1.打包上傳后端代碼
- IDEA打開(kāi)你的項(xiàng)目工程,在application-dev.yml文件中修改datasource和redis的主機(jī)和端口,如下圖
- ?然后打開(kāi)右邊的maven,點(diǎn)擊跳過(guò)測(cè)試,然后執(zhí)行package
- ?接著在你的本地就會(huì)生成一個(gè)jar包,一般在該目錄的target目錄下,參考下圖
- ?接著打開(kāi)寶塔面板的文件,在data目錄新建一個(gè)sky目錄,在sky目錄上傳剛才我們打包好的jar包
?2.配置Redis
- 拉取Redis鏡像,默認(rèn)最新版
docker pull redis
- 創(chuàng)建redis容器,因?yàn)閞edis需要修改配置文件,我們采用外部掛載的方式會(huì)方便很多
docker run -v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d --name myredis \
-p 6380:6379 \
redis:latest redis-server /etc/redis/redis.conf
- 接著打開(kāi)寶塔面板文件,進(jìn)入redis.conf目錄,在該目錄有redis.conf文件就不管,沒(méi)有就自己創(chuàng)建
- ?編輯redis.conf文件
#持久化存儲(chǔ)
appendonly yes
#設(shè)置redis密碼
#requirepass 123456
- 因?yàn)槲覜](méi)有設(shè)置密碼,所以我把它注釋了,這個(gè)根據(jù)你項(xiàng)目的配置文件而定,有的話(huà)自己加上?
- ?接著用桌面端工具測(cè)試一下是否可以連接,連接成功就沒(méi)問(wèn)題
3.配置MySQL
- 拉取MySQL鏡像,默認(rèn)為最新版
docker pull mysql
- 創(chuàng)建mysql容器
這里的鏡像id需要使用docker ps -a命令查看自己對(duì)應(yīng)的mysql鏡像id,和之前使用過(guò)的操作一樣
docker run -id --name=mysql -p 3305:3306 -e MYSQL_ROOT_PASSWORD=123456 <鏡像id>
- 使用本地連接工具測(cè)試一下數(shù)據(jù)庫(kù)是否可以連接,連接成功就沒(méi)問(wèn)題
- ?接著將你之前本地的sky_take_out轉(zhuǎn)為sql文件導(dǎo)入這里
4.部署后端代碼
- 之前我們已經(jīng)將jar文件上傳到服務(wù)器上,然后我們?cè)陧?xiàng)目目錄下編寫(xiě)DockerFile文件
?打開(kāi)寶塔面板文件,進(jìn)入data之前創(chuàng)建的sky目錄,在該目錄新建名為DockerFile的文件
- ?編輯DockerFile文件(jdk可以修改,因?yàn)槲矣玫膉dk11)
#拉取jdk11版本的鏡像
FROM openjdk:11-jdk-slim
#作者自己自定義
LABEL maintainer=yang
COPY *.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
- 然后終端輸入指令轉(zhuǎn)到該目錄下,查看文件內(nèi)容,你就會(huì)看到你剛剛編寫(xiě)的內(nèi)容
cd /data/sky/ #轉(zhuǎn)到對(duì)應(yīng)目錄
cat DockerFile #查看文件內(nèi)容
- 構(gòu)建docker鏡像,后面的 . 不要誤刪了,代表在該目錄工作(這句代碼最好復(fù)制)
docker build -t java-sky:v1.0 -f DockerFile .
- 建立java容器(最好先檢查容器是否全部啟動(dòng),指令是docker ps)
docker run -d -p 8081:8080 --name sky java-sky:v1.0
- 打開(kāi)nginx.conf文件,修改一下nginx的轉(zhuǎn)發(fā)規(guī)則,將請(qǐng)求轉(zhuǎn)發(fā)到后端
注:該文件在/data/conf/目錄下,就不另外配圖了
- ?重啟nginx容器,使配置生效
docker restart <容器ID>
- 瀏覽器測(cè)試,你的云服務(wù)器IP+8080端口訪問(wèn),成功訪問(wèn)
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-788410.html
就此,項(xiàng)目部署完成。?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-788410.html
四:?jiǎn)栴}解決
- 關(guān)于蒼穹外賣(mài)上線后WebSocket連接失敗問(wèn)題解決-CSDN博客
到了這里,關(guān)于蒼穹外賣(mài)部署到云服務(wù)器使用Docker學(xué)習(xí)筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!