使用Docker部署easy-mock

總體思路

  • 分別使用兩個容器去部署mongodb和eask-mock項目,使用link進行容器間通信
  • mongodb使用主機數據卷外掛數據庫
  • 通過Dockerfile制造一個easy-mock的鏡像
  • 部署步驟基于我之前的文章:從零開始的在Centos上搭建easy-mock服務

注意:這個部署方案主要是用于我學習docker后的一個練習,目標旨在成功部署運行,未考慮持續運行需要,所有的容器運行都帶有--rm屬性,停止就會刪除容器。

第一步:拉取標準容器

docker pull mongo
docker pull node

第二步:部署數據庫

# 使用外掛數據卷形式運行數據庫
$ docker run --rm --name mongodbtest -v /Users/elesgong/Documents/workspace/docker/data/mongo:/data  mongo:latest 
# 使用docker ps獲取容器ID
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
44e1ca6e4f86        mongo:latest        "docker-entrypoint.sh"   11 seconds ago      Up 8 seconds        27017/tcp           mongodbtest
# 獲取容器ID后,使用docker exec進入到容器內部交互
$ docker exec -it 44e1ca6e4f86 bash
# 進入容器后使用mongo命令,新建一個數據庫后退出
[root@44e1ca6e4f86:/# mongo  
> use easymockdb
> exit
root@44e1ca6e4f86:/# exit

第三步:創建應用鏡像

# 先通過env命令來獲取連接到剛才新建的mongodb容器的映射ip
docker run --rm --name easymocktest --link mongodbtest:db node:latest env
HOSTNAME=82a8408f0096
DB_PORT=tcp://172.17.0.2:27017
# 將上面輸出的ip寫到主機上easymock項目的配置文件local.json中
"db": "mongodb://172.17.0.2:27017/easymockdb"
# 創建應用鏡像,在easy-mock所在的項目根目錄下放入Dockerfile
$ vi Dockerfile
FROM node:latest  --基于標準的node鏡像
RUN mkdir -p /home/app  --新建工作空間
WORKDIR /home/app
COPY . /home/app  --將項目拷貝到工作空前
RUN npm install && npm run build  --項目運行前的準備工作,使用&&連接符如果換行會報錯。
EXPOSE 7300  --暴露端口,根據項目local.json配置暴露端口
CMD npm run dev  --項目啟動命令
# 放好后運行鏡像創建命令
$ docker build -t easymocktest .
# 創建完成后查看景象是否存在
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
easymocktest        latest              6d272e0e40bd        About a minute ago   888.3 MB

第四步:啟動應用容器

# 啟動node容器,并根據Dockerfile暴露的端口映射到主機端口以便訪問
$ docker run --rm --name easymocktest1 -p 7300:7300 --link mongodbtest:db easymocktest:latest

啟動成功后直接在主機訪問http://localhost:7300即可打開easy-mock項目。

運行成功.png

第五步:停止容器

# 通過容器名稱停止
$ docker stop easymocktest1
# 通過容器ID停止
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
44e1ca6e4f86        mongo:latest        "docker-entrypoint.sh"   About an hour ago   Up About an hour    27017/tcp           mongodbtest
$ docker stop 44e1ca6e4f86

資料參考

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容