<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
溫馨提示:如果有自己的伺服器最好不過了,這樣部署網專案就可以上線了。沒有的話,只能使用localhost 本機存取啦,記得替換 ngixn 中的ip地址、域名為localhost。
1、安裝Docker並設定阿里雲倉庫加速
① 環境檢視,選擇對應的docker的安裝版本:
# 先檢視發行版 cat /etc/os-release # 若是redhat,檢視系統資訊: cat /etc/redhat-release # 若是debain,檢視系統資訊: cat /etc/debian_version
2、安裝Docker
選擇linux版本的docker安裝教學
# 1、解除安裝舊版本: sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine # 2、使用倉庫安裝 # 需要的安裝包 sudo yum install -y yum-utils # 官網提供的倉庫,下載速度太慢【預設是國外的,我們不要使用國外的,需要使用國內的阿里雲映象地址】 # 不用官網的倉庫,選擇阿里雲的倉庫 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 更新yum 軟體包索引 yum makecache fast # 3、安裝 Docker 引擎 docker-ce 社群 docker-ee 企業版 yum install docker-ce docker-ce-cli containerd.io # 4、啟動 Docker systemctl start docker # 檢查是否成功啟動 docker version # 5、測試hello-world docker run hello-world # 檢視下載的映象 docker images # 6、瞭解解除安裝工作: # 解除安裝 Docker 引擎(解除安裝依賴) sudo yum remove docker-ce docker-ce-cli containerd.io # 刪除所有映像、容器和卷(珊除資源) /var/lib/docker 是docker預設的工作路徑 sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
2-2、阿里雲映象加速
登入阿里雲官網,點選控制檯,找到產品與服務,搜容器映象服務
映象加速器:
設定使用:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://o10wzpax.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
3、安裝DockerCompose
(1) 下載
# 官網提供的下載地址太慢了 # 使用daocloud提供的下載速度更快 curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
(2) 授權
sudo chmod +x /usr/local/bin/docker-compose
(3) 驗證是否安裝成功:
[root@iZwz9535z41cmgcpkm7i81Z bin]# docker-compose --version docker-compose version 1.29.1, build c34c88b2
前端、後端增加生產環境設定,然後修改:專案主機號、請求路徑以及將mysql和redis的主機號修改為docker compose的服務名
1、修改前後端組態檔的專案主機號
前端修改設定存取後端路徑,後端改的就是跨域設定允許前端存取的路徑
前端生產環境設定:
後端生產環境設定(跨域設定):
2、修改前後端組態檔的專案請求路徑
後端專案暴露的埠是8888,編寫docker-compose.yaml時記得暴露
3、後端生產環境的設定把mysql和redis的主機號修改為docker compose的服務名
4、打包
(1) 前端打包命令:npm run build
打包生成了一個dist包
(2) 後端是多環境設定,打包記得把依賴一起打包:
記得設定啟用的設定環境為 prod,如果忘記在springboot 設定中環境設定了,還可以在製作spirngboot映象的dockerfile 中指明 生產環境是prod
# springboot 中 application-prod.properties檔案中設定 spring.profiles.active=prod
打包記得把依賴一起打包:
# 建立 /mnt/docker/ 目錄 mkdir -p /mnt/docker/ cd /mnt/docker/
接下來:
① 編寫構建各個專案模組的Dockerfile
② 編寫docker-compose.yaml
③ mysql、redis、nginx的設定
④ 啟動dockerCompose編排
⑤ 匯入資料[資料庫表資料、前端靜態web資源]
⑥ 測試存取,並排除錯誤
1、上傳打包生成的jar包,上傳到/mnt/docker/ 目錄,並修改jar包的包名為 blog_api.jar
2、編寫映象檔案 api_dockerfile:
FROM java:8 MAINTAINER shan <test@qq2363581677@163.com> ADD ./blog_api.jar /api.jar CMD java -jar /api.jar --spring.profiles.active=prod
3、構建生成映象 api:
命令: docker build -f dockerfile路徑 -t 自定義映象名稱 .
# blog_api 生成映象 docker build -f ./api_dockerfile -t api .
1、編寫 docker-compose.yaml
version: "3" services: mysql: image: mysql:5.7 container_name: mysql volumes: - /mnt/docker/mysql/conf:/etc/mysql/conf - /mnt/docker/mysql/logs:/logs - /mnt/docker/mysql/data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: admin redis: image: redis container_name: redis volumes: - /mnt/docker/redis/data:/data api: image: api container_name: api expose: - "8888" depends_on: - mysql - redis nginx: image: nginx container_name: nginx ports: - 80:80 - 443:443 volumes: - /mnt/docker/nginx/:/etc/nginx/ - /mnt/shan/blog:/shan/blog links: - api depends_on: - api
2、dockercompose 進行編排
★ 前提:mysql、redis、nginx的組態檔設定好後才可以進行編排
# 切換到docker-compose.yaml目錄下,啟動容器 cd /mnt/docker/ docker-compose up docker-compose up -d #代表後臺啟動 docker-compose down #停止並刪除容器 docker-compose start #啟動已有容器 docker-compose stop #停止執行的容器
1、mysql的設定:
① mysql 服務在docker-compose.yaml 中的編寫內容為:
mysql: volumes: - /mnt/docker/mysql/conf:/etc/mysql/conf
② 掛載mysql的組態檔:
mkdir -p /mnt/docker/mysql/conf cd /mnt/docker/mysql/conf # 編寫my.cnf檔案[vim my.cnf]
[mysqld] # # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock character-set-server=utf8 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 lower_case_table_names=1 pid-file=/var/run/mysqld/mysqld.pid sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
2、redis的設定:
① redis 服務在docker-compose.yaml 中的編寫內容為:
redis: volumes: - /mnt/docker/redis/data:/data
由於沒有掛載組態檔,所有不用掛載redis的設定
3、nginx的設定:
① nginx 服務在docker-compose.yaml 中的編寫內容為:
nginx: volumes: - /mnt/docker/nginx/:/etc/nginx/ #組態檔 - /mnt/shan/blog:/shan/blog # web資源
② 掛載nginx的組態檔:
mkdir -p /mnt/docker/nginx/ cd /mnt/docker/nginx/ # 編寫nginx 組態檔
nginx基本設定,編寫nginx.conf檔案[vim nginx.conf]:
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
nginx基本組態檔nginx.conf中include了一個mime.types組態檔:
上傳mime.types組態檔:
cd /mnt/docker/nginx/ # 使用xftp工具上傳mime.types組態檔
注意:沒有自己的伺服器,把下面 blog.conf設定 中的域名server_name 改為localhost,並且沒有ssl證書,記得把443(https 協定埠號) 的設定去掉,並把80(http協定埠號)rewrite 部分去掉。
nginx組態檔blog.conf 記得將組態檔的中文註釋去除再複製貼上。
mkdir -p /mnt/docker/nginx/conf.d cd /mnt/docker/nginx/conf.d # 編寫blog.conf檔案[vim blog.conf]
gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 2; gzip_vary off; upstream apistream{ server api:8888; } server{ listen 80; server_name blog.yilele.site; rewrite ^(.*) https://blog.yilele.site/$1 permanent; } server { listen 443 ssl; server_name blog.yilele.site; index index.html; ssl_certificate /etc/nginx/ssl/blog.yilele.site.pem; ssl_certificate_key /etc/nginx/ssl/blog.yilele.site.key; ssl_session_timeout 5m; location /api {#請求https://blog.yilele.site/api 會代理轉發到 api:8888 proxy_pass http://apistream; } location / { root /shan/blog/; index index.html; } location ~* .(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ { root /shan/blog/; index index.html; add_header Access-Control-Allow-Origin *; } }
③ 設定nginx的ssl證書
申請、下載和上傳伺服器的ssl證書
# nginx的組態檔: server{ listen 80; server_name blog.yilele.site; #域名 ..... } # ssl的PEM 證書通常具有以下擴充套件: .pem、.crt、.cer 和.key ssl_certificate /etc/nginx/ssl/blog.yilele.site.pem;#nginx的ssl公鑰,注意是pem字尾,可以根據阿里雲ssl下載的格式填寫 ssl_certificate_key /etc/nginx/ssl/blog.yilele.site.key;#nginx的ssl私鑰 # 再根據 docker-compose.yml 檔案推出ssl證書上傳的目錄: volumes: - /mnt/docker/nginx/:/etc/nginx/
上傳ssl證書:
mkdir -p /mnt/docker/nginx/ssl cd /mnt/docker/nginx/ssl # 使用xftp工具上傳ssl證書(blog.yilele.site.pem、blog.yilele.site.key)
可以啟動dockercompose 進行編排啦~
1、匯入資料庫表的資料
(1) 匯入sql檔案
① mysql的掛載資訊:
volumes: ..... - /mnt/docker/mysql/data:/var/lib/mysql
② 資料庫檢視工具navicat 把表匯出sql檔案:
③ 上傳sql檔案(檔名:blog.sql):
在資料庫中建立和 sql檔案(blog.sql)對應的資料庫名blog
cd /mnt/docker/mysql/data # 使用 xftp 將 blog.sql 進行傳輸
(2) 執行sql檔案(建立blog 資料庫並匯入資料)
# 進入mysql容器: docker exec -it mysql bash # 切換到掛載目錄(blog.sql 所在目錄): cd /var/lib/mysql # 檢視該目錄下所有檔案: ls # 可以看到blog.sql也在該目錄下
接下來在docker中執行該sql:
mysql -uroot -p # 輸入密碼 admin ,進入docker中的資料庫 # 建立資料庫 create database blog; # 退出回到容器 exit # 在/var/lib/mysql目錄下,將檔案blog.sql匯入資料庫 mysql -u root -p blog < blog.sql; # 輸入密碼 admin # 重新進入資料庫,切換資料庫 mysql -uroot -p # 輸入密碼 admin ,進入docker中的資料庫 use blog; # 執行sql並儲存資料庫 source blog.sql; # 執行source命令可能會報錯,打不開blog.sql 檔案,這個問題可以忽略。
將.sql檔案匯入資料庫命令:mysql -u 使用者名稱 -p 資料庫(blog) < 要匯入的資料庫資料(blog.sql)
結果檢查
use blog; show tables; select * from ms_admin;
如果能查出來結果,那就說明我們的mysql匯入sql檔案成功了。
(3) 檢查mysql的設定
● 編排dockerCompose之後檢查docker中mysql的設定是否成功:
docker logs -f mysql
沒有看到報錯資訊即成功(警告資訊可以忽略)
2、匯入前端靜態web資源
(1) nginx 前端web資源的設定:
volumes: ...... - /mnt/shan/blog:/shan/blog # web資源
# 在log目錄用於上傳前端的web資源(打包工具打包生成的html、css、js、圖片等) cd /mnt/shan/blog # 使用xftf 上傳web資源
(2) 手動壓縮前端dist包,上傳到 /mnt/shan/blog 目錄
#獲取安裝列表 yum安裝列表中搜尋zip/unzip是否存在 yum list|grep zip yum list|grep unzip #執行安裝支援zip命令 yum install -y zip #執行安裝支援unzip命令 yum install -y unzip
上傳web資源(dist 壓縮包)
# 使用xftf 上傳web資源 # 解壓 unzip dist.zip
可以測試排錯啦~
(1) 測試:
api 模組的測試:存取 https://blog.yilele.site/
● 當我們覺得部署完全搞定的時候,就可以docker-compose up -d 後臺啟動,這樣的話關掉遠端連線也能執行了。
(2) 排查錯誤:
docker 常用命令:
# 容器命令 ● 檢視執行的容器:docker ps ● 刪除容器:docker rm -f 容器id或容器名稱 ● 刪除所有容器:docker rm -f $(docker ps -aq) ● 建立、啟動並進入容器: docker run -it 容器id或容器名稱 bash ● 進入啟動過的容器: docker exec -it 容器id或容器名稱 bash ● 退出容器:【停止容器】exit 【非停止容器】ctr+p+q ● 啟動容器:docker start 容器id # 映象命令 ● 檢視所有映象: docker images ● 刪除映象: docker rmi -f 映象id ● 刪除所有映象: docker rmi -f $(docker images -aq)
dockerCompose 常用命令:
# 切換到docker-compose.yaml目錄下,啟動容器 docker-compose up docker-compose up -d #代表後臺啟動 docker-compose down #停止並刪除容器 docker-compose start #啟動已有容器 docker-compose stop #停止執行的容器
檢視紀錄檔進行排查錯誤:
# 檢視後端專案的錯誤-紀錄檔(進入docker-compose的目錄下): cd /mnt/docker/ docker-compose logs # 檢視伺服器端ngix-紀錄檔: docker logs nginx
到此這篇關於docker Compose部署springboot+vue前端端分離的文章就介紹到這了,更多相關docker Compose部署springboot vue內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45