1. 程式人生 > 實用技巧 >IDEA 部署Docker映象

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的遠端連線

  1. 編輯檔案 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

  2. 重新載入配置檔案

    systemctl daemon-reload

  3. 重啟docker

    systemctl restart docker

  4. 檢視 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

  1. 拉取映象docker pull mysql:5.7.26

  2. 啟動docker run -p 3306:3306 --name mysql:5.7.26 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26

  3. 配置外網訪問

    進入容器 docker exec -it 47e74a93cf87 bash

    登入mysql -uroot -p輸入密碼

    命令 grant all privileges on *.* to root@"%" identified by "123456" with grant option;

    重新整理 flush privileges;

    之後就可以我們就可以在物理機上通過nvicate 來連線上。

安裝nginx

  1. 拉取映象: docker pull nginx

  2. 檢視映象: docker images

  3. 在宿主機建立配置檔案目錄

    mkdir -p /data/nginx/{conf,conf.d,html,log}

  4. 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;
            }
        }
    
    }
    
    
  5. index.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>docker搭建nginx</title>
    </head>
    <body>
        <h1>docker搭建nginx對映成功</h1>
    </body>
    </html>
    
  6. 啟動並掛載配置檔案目錄

    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

  7. 在物理機訪問 虛擬機器ip ,看是否成功

  8. 重啟nginxdocker restart 容器ID

部署專案

  1. 將前端專案,build ,將生成的 dist 資料夾裡的內容上傳到 html 目錄
  2. 在 nginx.conf 配置檔案裡配置後臺介面地址
  3. 訪問nginx 伺服器ip,測試是否可以訪問。

遠端訪問

  1. 經過上面的操作,我們已經可以在本地跑起來idea 裡的專案了,在idea控制檯也可以直接看到專案的執行日誌。

  2. 那麼,如果我們要給領導或者客戶看專案的進度怎麼辦?

  3. 可以使用 內網穿透,將區域網的 ip 映射出去。

  4. 之前使用的 ngrok.cc, 免費的總是斷,體驗不是很好。推薦一個穩定點的。utools,裡面有內網穿透的功能,目前來說還是挺快挺好用的。

  5. 使用介面如下圖所示:

  6. 完結撒花~~

Docker 容器中文字型亂碼問題

​ 在宿主機內安裝中文字型

  1. 檢視已經安裝的中文字型 fc-list :lang=zh

  2. 如果沒有這個命令,安裝上 yum -y install fontconfig

  3. 將Windows 上的 C:\Windows\Fonts 資料夾下的字型檔案上傳到 伺服器目錄 /usr/share/fonts/dejavu/

    ​ 比如 : 宋體字 (simsun.ttc)

  4. 清除快取 fc-cache

然後在需要中文字型的容器裡掛載宿主機的 字型檔案, ,冒號前為宿主主機目錄,冒號後為容器對應目錄

docker run -p 80:80--name demo -v /usr/share/fonts/dejavu/:/usr/share/fonts/