Meteor應(yīng)用的Docker部署

Docker 部署

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

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

解決方案
1.通過sinopia創(chuàng)建本地的npm庫
2.通過docker隔離每個應(yīng)用

步驟

環(huán)境: CentOS 7

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

# 安裝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環(huán)境 (可不需要)

安裝

#安裝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

# 跟隨系統(tǒng)reboot啟動 
sudo chkconfig mongod on

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

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


# 創(chuàng)建數(shù)據(jù)庫
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發(fā)行版的包管理工具安裝 注: CentOS 要求7.0以上
通過命令行安裝

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

# 重啟服務(wù)器(務(wù)必)
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

創(chuàng)建新的鏡像

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

導(dǎo)入與導(dǎo)出鏡像

# 導(dǎo)出
sudo docker save -o dockername.tar  username/imagename

# 導(dǎo)入
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對外訪問問題
    默認(rèn)在mongod.conf中將可訪問的ip限制在本地127.0.0.1,在不docker化mongoDB的情況下,想讓container訪問到可參考這里

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容