IDEA 部署Docker映象
Docker
開啟虛擬機器,開啟 finalshell 客戶端
- 開啟docker
service docker start
映象操作
- 檢視映象
docker images
- 搜尋映象
docker serarch 映象名
- 拉取映象
docker pull 映象名:標籤號
例如:docker pull mysql:5.7.26
- 刪除映象
docker rmi 映象ID/名稱
容器操作
-
查詢容器
docker ps
, 檢視所有容器docker ps -a
-
刪除容器
docker rm 容器ID/容器名
-
開啟容器
docker start 容器ID/容器名
-
停止容器
docker stop 容器ID/容器名
-
進入容器操作
docker exec -it 容器ID bash
-
檢視容器日誌
docker logs Name/ID
-
拷貝檔案到宿主機
docker cp -a bb397b55cde0:/tmp/ /tmp
-
拷貝檔案到容器
docker cp -a /tmp bb397b55cde0:/tmp/
開啟Docker的遠端連線
-
編輯檔案 docker.service
vi /usr/lib/systemd/system/docker.service
找到
ExecStart=/usr/bin/dockerd
這一行將其改為如下內容:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
-
重新載入配置檔案
systemctl daemon-reload
-
重啟docker
systemctl restart docker
-
檢視 2375 埠是否開放
netstat -nlpt
也可以直接訪問
curl http://127.0.0.1:2375/info
,如果有返回資訊,則已開放
IDEA 下載 外掛
PS:總覺得這個外掛有bug,如在 容器裡設定了引數不生效。。。
在 Settings->Plugins->Marketplace 搜尋 docker
安裝完重啟 IDEA
然後在 Settings 裡搜尋 docker ,配置上docker 地址,下面顯示 successful 即連線成功
在 IDEA 頁面的下面 有個 docker 的按鈕,點開可以看到docker裡所有的容器,所有的映象
IDEA 推送映象
首先maven clean 清理原生代碼
maven package 打包本地專案,生成 jar
在 DockerFile 頁面,編輯
/usr/share/fonts/dejavu/
如果需要 docker裡的mysql ,則 在配置檔案裡 這樣寫即可:
url: jdbc:mysql://mysql:3306/DBname?characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai
點選執行就可以將上面生成的 jar 打包成 docker 映象,並上傳到 docker 裡。
如果專案依賴較多,需要較長時間
在IDEA 控制檯就可以看到上傳成功的 映象,可以新建容器,執行
在IDEA 控制檯也可以配置 容器的引數,比如埠對映,掛載檔案,啟動日誌等,十分方便。
就醬,後臺專案就啟動完成了,物理機訪問虛擬機器ip 加上映射出來的埠號就可以訪問到介面了
不過,僅能訪問後臺介面不是我們最終要的效果,得有介面啊!
安裝MySQL
-
拉取映象
docker pull mysql:5.7.26
-
啟動
docker run -p 3306:3306 --name mysql:5.7.26 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26
-
配置外網訪問
進入容器
docker exec -it 47e74a93cf87 bash
登入
mysql -uroot -p
輸入密碼命令
grant all privileges on *.* to root@"%" identified by "123456" with grant option;
重新整理
flush privileges;
之後就可以我們就可以在物理機上通過nvicate 來連線上。
安裝nginx
-
拉取映象:
docker pull nginx
-
檢視映象:
docker images
-
在宿主機建立配置檔案目錄
mkdir -p /data/nginx/{conf,conf.d,html,log}
-
nginx.conf
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { index index.html index.htm; root /usr/share/nginx/html; charset utf-8; try_files $uri $uri/ /index.html; } location ^~/api/ { proxy_pass http://192.168.1.130:8080/; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
-
index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>docker搭建nginx</title> </head> <body> <h1>docker搭建nginx對映成功</h1> </body> </html>
-
啟動並掛載配置檔案目錄
docker run --name my_nginx -d -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/log:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html nginx
-
在物理機訪問 虛擬機器ip ,看是否成功
-
重啟nginx
docker restart 容器ID
部署專案
- 將前端專案,build ,將生成的 dist 資料夾裡的內容上傳到 html 目錄
- 在 nginx.conf 配置檔案裡配置後臺介面地址
- 訪問nginx 伺服器ip,測試是否可以訪問。
遠端訪問
-
經過上面的操作,我們已經可以在本地跑起來idea 裡的專案了,在idea控制檯也可以直接看到專案的執行日誌。
-
那麼,如果我們要給領導或者客戶看專案的進度怎麼辦?
-
可以使用 內網穿透,將區域網的 ip 映射出去。
-
之前使用的 ngrok.cc, 免費的總是斷,體驗不是很好。推薦一個穩定點的。utools,裡面有內網穿透的功能,目前來說還是挺快挺好用的。
-
使用介面如下圖所示:
-
完結撒花~~
Docker 容器中文字型亂碼問題
在宿主機內安裝中文字型
-
檢視已經安裝的中文字型
fc-list :lang=zh
-
如果沒有這個命令,安裝上
yum -y install fontconfig
-
將Windows 上的 C:\Windows\Fonts 資料夾下的字型檔案上傳到 伺服器目錄
/usr/share/fonts/dejavu/
下 比如 : 宋體字 (simsun.ttc)
-
清除快取
fc-cache
然後在需要中文字型的容器裡掛載宿主機的 字型檔案, ,冒號前為宿主主機目錄,冒號後為容器對應目錄
docker run -p 80:80--name demo -v /usr/share/fonts/dejavu/:/usr/share/fonts/