Meteor應用的Docker部署

Docker 部署

目前部署方式
本地build,上傳服務器,npm install,PM2啟動與管理項目

目前的問題
1.Meteor打包成Nodejs應用進行部署的時候,npm install總是會出問題;
2.應用程序不穩定,莫名的掛了,目前判斷可能是Nodejs版本的問題;

解決方案
1.通過sinopia創建本地的npm庫
2.通過docker隔離每個應用

步驟

環境: CentOS 7

1.配置NodeJS環境 (可不需要)

# 安裝nodejs4.0
curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
yum -y install nodejs
yum install gcc-c++ make

# 安裝n -nodejs版本管理工具
npm install n -g
n 0.10.43 # meteor1.3 官方nodejs版本

2.安裝配置MongoDB環境 (可不需要)

安裝

#安裝MongDB 3.2
vim /etc/yum.repos.d/mongodb-org-3.2.repo

### /etc/yum.repos.d/mongodb-org-3.2.repo
[mongodb-org-3.2]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
###
sudo yum install -y mongodb-org

配置

# 配置MongoDB

# 啟動mongodb server
service mongod start

# 跟隨系統reboot啟動 
sudo chkconfig mongod on

# mongodb client 登錄
mongo
# 創建管理員賬號
use admin
db.createUser( { user: "myUserAdmin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })

# 配置mongoDB登錄認證
vim /etc/mongod.conf
### /etc/mongod.conf
security:
    authorization: enabled 
###
service mongod restart # 重啟
# 驗證
mongo
use admin
db.auth("myUserAdmin", "abc123")
db.system.users.find({})


# 創建數據庫
mongo
use admin
db.auth("myUserAdmin", "abc123")
use testdb
db.createUser({ user: "test", pwd: "test123", roles: [ { role: "readWrite", db: "testdb" } ] })

mongodb role說明

3.安裝Docker
通過linux發行版的包管理工具安裝 注: CentOS 要求7.0以上
通過命令行安裝

curl -fsSL https://get.docker.com/ | sh

# 重啟服務器(務必)
sudo reboot

4.配置sinopia
這里使用sinopia的docker版本

docker pull keyvanfatehi/sinopia:latest
docker run --name sinopia -d -p 4873:4873 keyvanfatehi/sinopia:latest
npm set registry http://0.0.0.0:4873/

5.配置meteord

base/

# Dockerfile
ARG DEBIAN_FRONTEND=noninteractive

# scripts/run_app.sh
if [ sinopia ]; then
  npm set registry http://sinopia:4873/
fi

創建新的鏡像

sudo docker build  -t 'username/imagename' ./ 

導入與導出鏡像

# 導出
sudo docker save -o dockername.tar  username/imagename

# 導入
sudo docker load --input dockername.tar

運行

docker run -d  \
  -e ROOT_URL=http://localhost \ 
  -e MONGO_URL=mongodb://test:test123@yourhost:27017/testdb \
  -p 8080:80 \
  --link sinopia:sinopia \
  -v /path/to/bundle:/bundle \
  --name contaiername  \
  username/imagename

注意點

  • mongoDB對外訪問問題
    默認在mongod.conf中將可訪問的ip限制在本地127.0.0.1,在不docker化mongoDB的情況下,想讓container訪問到可參考這里

  • build鏡像時報錯:debconf: unable to initialize frontend: Dialog
    docker升級到最新,在Dockerfile中設置ARG DEBIAN_FRONTEND=noninteractive, 不要使用ENV設置

  • 不要使用CentOS 6.5
    官方將不再支持

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

推薦閱讀更多精彩內容