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版本
安裝
#安裝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" } ] })
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
官方將不再支持