手把手教你通過 Docker 部署前后端分離項目
VSole2022-12-05 10:31:31
一、安裝Docker
1、安裝:
yum install docker
2、啟動/停止/重啟docker服務
service docker start service docker stop service docker restart
3、查看docker版本信息
docker version

4、運行helloword,因為不存在此鏡像,docker會自動下載運行本鏡像
docker run hello-world

5、查看所有docker鏡像
docker images

二、安裝Nginx
1、拉取Nginx鏡像文件
docker pull nginx

2、查看下載好的鏡像文件
docker images

3、創建并運行Nginx容器
docker run -d --name nginx01 -p 3344:80 nginx 命令詳解: # docker run 啟動一個鏡像 # -d 表示后臺允許 # --name nginx01 表示為當前容器起一個別名 # -p 3344:80 表示將本機的3344端口映射到nginx鏡像的80端口
4、查看正在運行的容器
docker ps

5、查看Nginx是否部署成功
curl localhost:3344

拓展
1、進入Nginx容器當中
docker exec -it nginx01 /bin/bash 命令詳解: # docker exec 在運行的容器中執行命令 # -i 以交互模式運行容器,通常與 -t 同時使用;例如-it # -t 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;例如-it # nginx01 容器名 # /bin/bash 其實就是表示載入容器后運行bash(命令語言解釋程序), 因為docker中必須要保持一個進程(運行的程序)的運行,要不然整個容器就會退出,所以說,bash就擔任起了docker中運行的那個進程的角色! #而/bin/bash則是bash在linux下的位置
2、在容器中查詢出nginx的相關配置文件存放位置
whereis nginx
3、退出容器,回到本地linux系統
exit
4、停止并移除Nginx容器
docker stop bedfd2a72585 #停止容器 docker rm bedfd2a72585 #移除容器 # bedfd2a72585表示容器的ID,即:CONTAINER ID
5、本地創建管理目錄
mkdir -p /data/nginx mkdir -p /data/nginx/www mkdir -p /data/nginx/conf mkdir -p /data/nginx/logs
6、將容器中的相應文件copy到剛創建的管理目錄中
docker cp bedfd2a72585:/etc/nginx/nginx.conf /data/nginx/ docker cp bedfd2a72585:/etc/nginx/conf.d /data/nginx/conf/ docker cp bedfd2a72585:/usr/share/nginx/html/ /data/nginx/www/ docker cp bedfd2a72585:/var/log/nginx/ /data/nginx/logs/
注:docker cp bedfd2a72585中的 "bedfd2a72585" 為容器ID(docker ps可查看)
7、再次啟動容器并作目錄掛載
docker run --name nginx -p 80:80 -v /data/nginx/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/www/:/usr/share/nginx/html/ -v /data/nginx/logs/:/var/log/nginx/ -v /data/nginx/conf/:/etc/nginx/conf.d --privileged=true -d nginx
ps:-p 80:80 端口進行映射,將本地 80端口映射到容器內部的 80 端口。
三、安裝Mysql
1、下拉mysql鏡像文件
docker pull mysql #默認最新版本 docker pull mysql:xxx #指定版本號

2、查看當前鏡像
docker images

3、啟動mysql容器
第一種:
docker run --name mysql01 -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=root mysql
命令詳解:
# --name 自定義容器名稱 # -d 后臺運行 # -p 指定映射的端口號 # -e MYSQL_ROOT_PASSWORD=root 數據庫密鑰
第二種:
docker run --restart=always --privileged=true -d -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/my.cnf:/etc/mysql/my.cnf -p 3311:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=root mysql
--restart=always代表開啟啟動--privileged=true代表進入容器內部為管理員身份-d表示后臺運行容器 并返回容器Id-v把mysql產生的數據同步到本地 防止數據丟失-e容器傳參 設置mysql的初始密碼
4、查看正在運行的容器
docker ps

5、測試數據庫連接


四、部署SpringBoot項目
1、整合后端成Jar包并編寫Dockerfile文件

2、Dockerfile內容詳解
FROM java:8 #工程java版本 COPY *.jar /app.jar #將所有的jar包整合為app.jar EXPOSE 9099 #暴露后端端口號 ENTRYPOINT ["java","-jar","app.jar"] #執行jar包
3、將文件上傳到Linux服務器上面,必須放在同級目錄一起!

4、構建鏡像
docker build -t api . #點千萬別漏了,這里取名鏡像為api,可以隨便取名!

5、查看當前鏡像
docker images

6、創建一個新的容器并運行
docker run -d -p 9099:9099 --name httapi api #將9099端口映射到9099端口,端口記得放開 #httapi為自定義容器名字 #api是鏡像名字
7、查看正在運行的容器
docker ps

8、使用postman測試接口

五、部署Vue項目
1、打包Vue工程并同時編寫default.conf文件和Dockerfile文件

2、default.conf文件和Dockerfile文件詳細
- default.conf配置
server {
listen 80;
server_name ip地址; # 修改為docker服務宿主機的ip
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
location /api {
proxy_pass http://ip地址:端口號/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
- Dockerfile配置
# 基礎鏡像使用Nginx FROM nginx # 作者 MAINTAINER htt # 添加時區環境變量,亞洲,上海 ENV TimeZone=Asia/Shanghai # 將前端dist文件中的內容復制到nginx目錄 COPY dist /usr/share/nginx/html/ # 用本地的nginx配置文件覆蓋鏡像的Nginx配置 COPY default.conf /etc/nginx/conf.d # 暴露端口 EXPOSE 80
3、上傳這三個文件到Linux服務器的同一個文件夾當中,務必放在一起!

4、構建鏡像
docker build -t vue . #點千萬別漏了,這里取名鏡像為vue,可以隨便取名!

5、查看當前鏡像
docker images

6、創建一個新的容器并運行
docker run -d -p 8088:80 --name httvue vue #將8088端口映射到80端口,端口記得放開 #httvue為自定義容器名字 #vue是鏡像名字
7、查看正在運行的容器
docker ps

8、訪問前端頁面并測試接口

VSole
網絡安全專家