如何搭建測試環境--利用docker部署web項目

前言:再看本文章之前需要大概理解docker的技術原理與基本概念,我認爲上手之前這些內容並不是很重要,所以這裏就不在贅述,爲什麼說不重要呢?其實剛接觸docker的同學可能對概念什麼的並不是很理解,往往官方晦澀難懂的解釋並不會給自己對docker的認識有多大的提高,我的建議還是從實踐中出發,先試着從簡單的出發,例如自己學會安裝鏡像文件與掛載容器,最後自己再試着部署一個web項目;等web項目部署好之後,我相信您會對docker已經產生了自己的概念,這個時候再回去看docker的基本概念與技術原理的時候就會簡單許多。其實在任何技術上不要幻想看一遍技術原理就會搞懂該技術,任何技術都需要親手去實踐,每一次的實踐都會對該項技術有新的認識,每一次新的認識又會對自己的技術做出補充,這樣互補的過程其實就是技術提高的過程,廢話不多說,直接上手怎麼去玩個web項目吧。

一、準備工作

搭建測試環境最不可少的可能就是服務器了,這個時候可能您要去協調個測試服務器過來給自己練手了,如果搞不到服務器,備選方案就是在自己電腦上搞個虛擬機了,具體教程請參考別的文章;

這裏我搞到兩臺機器,並與開發確認當前正在運行的項目已經安裝的軟件版本以及自己需要安裝哪些東西:

比較尷尬的是後面才發現安裝的這些東西都沒有用到 ,因爲都是用的同一套的數據庫等,所以後面部署就簡單許多,但是上述軟件及插件的安裝還是要介紹一下

二、基礎命令

  • 查詢鏡像文件:docker search +鏡像名
  • 拉取鏡像文件:docker pull +鏡像名
  • 查看已載鏡像:docker images
  • 創建並運行容器:docker run --name +自定義name -p +映射端口 -d +原鏡像文件
  • 查看容器:docker ps -a
  • 停止容器運行:docker stop +鏡像名(或鏡像ID)
  • 刪除容器:docker rm +鏡像名(或鏡像ID)
  • 進入容器:docker exec -it +鏡像id /bin/bash
  • 查看容器掛載位置:docker inspect be7dc5b882af(鏡像ID)
  • 啓動容器:docker start +鏡像名(或鏡像ID)
  • 重啓容器:docker restart +鏡像名(或鏡像ID)
  • 掛載:docker run --name cdy -p 8081:8081 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat
  • 這裏寫的並不多,只寫了本篇文章需要用到的命令;
  • 啓動一個服務(防火牆):systemctl start firewalld.service
  • 關閉一個服務(防火牆):systemctl stop firewalld.service
  • 重啓一個服務(防火牆):systemctl restart firewalld.service

三、軟件安裝

mysql

  • 運行mysql容器:docker run --name cmysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
  • 進入mysql終端:docker exec -it 7681b85e73a1 /bin/sh
  • 登錄數據庫(輸入密碼):mysql -uroot -p
  • 修改遠程權限(可以通過任何客戶端連接):ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123123';

redis

  • 運行redis容器(redis啓動的默認端口號是6379,這個時候宿主機使用6380進行映射,並設置授權密碼“caicai”):docker run --name c-redis -p 6380:6379 -d redis --requirepass "caicai"
  • redis客戶端連接命令:docker exec -it 鏡像ID redis-cli
  • 輸入密碼:auth caicai
  • 輸入用戶名:set name caidy
  • 退出:quit
  • 外部程序連接此容器的redis時地址爲:宿主機IP+6380(宿主機映射IP)

mongo

  • 運行mongo容器:docker run --name some-mongo -p 27017:27017 -d mongo --auth
  • 進入容器:docker exec -it 8fe134f471c5 /bin/bash
  • admin登錄mongo
  • use admin
  • 分配角色:db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})
  • 角色登錄:db.auth("root":"root")

activemq

  • 拉取最新鏡像文件:docker pull webcenter/activemq
  • 61616是activemq的容器使用端口(映射爲61617)8161是web管理端口(對外映射8162)docker run -d --name cdyactivemq -p 61617:61616 -p 8162:8161 webcenter/activemq
  • 登錄界面:http://**.**.**.**:8162/admin/

rocketmq

  • 啓動 rocketmq server 容器:docker run -d -p 9876:9876 --name rmqserver foxiswho/rocketmq:server
  • 啓動 rocketmq broker 容器:docker run -d -p 10911:10911 -p 10909:10909 --name rmqbroker --link rmqserver:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" foxiswho/rocketmq:broker
  • 啓動 rocketmq console 容器:docker run --name rmqconsole -p 8180:8080 --link rmqserver:namesrv -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -t styletang/rocketmq-console-ng 
  • 訪問主機ip(必須先啓動rocketmq console):http://**.**.**.**:8180
     

備註:

       

  • docker的linux系統不支持vim命令,進入容器後需要執行以下命令:
    apt-get update 
    apt-get install vim 
  • 直接執行第二條命令會報錯


    這個時候需要update ,但update時會失敗(默認地址是海外的),這個時候要修改編輯器的默認下載源或載入nginx代理
  • 由於使用的secureCRT沒有找到設置下載源的地方,於是先使用nginx代理再去執行第一步,下載鏡像並創建代理容器
  • 執行apt-get install vim ,成功
  • 測試環境zookeeper:118.178.190.126:2181
  • 打開軟件zktools:/zktools/bin/java-start--可以查看節點內容更新

四、web項目部署 

  • 下載項目代碼保存爲dsp.war文件
  • 上傳本地文件至宿主機
  • 這裏我用的是SecureCRT連接,不同的軟件有不同的上傳設置,這個自己摸索
  • 自定義文件存儲目錄:/usr/local/mydir/
  • secureCRT中設置上傳地址爲/usr/local/mydir/
  • 執行上傳命令:rz
  • 拷貝宿主機文件至tomcat容器內指定文件夾
  • 命令:docker cp /root/ROOT.war d9cb49dcd114:/usr/local/tomcat/webapps/
  • 使用以上命令將兩個war包分別放入下圖兩個容器中:
  • 重啓容器
     

這個時候我們就把war包放到指定的文件夾下了,這裏注意一點,若文件名不是ROOT,這輸入地址的時候要加上指定的文件夾名稱,否則會路徑出錯;

 項目地址:服務器地址+端口或者服務器地址+文件夾名稱+端口號

總結:

部署web項目的方式有很多,我這裏只是講了一種最基本的方法供參考,只要自己學會其中一種方式再做延伸來完善項目,簡便項目部署的步驟;可能本篇文章寫得並不是很詳細,適用範圍也不是很廣,也只是自己再搭建測試環境時的筆記而已,抽空會完善本篇文章,改造成docker部署的教程篇。有什麼問題可以一起探討;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章