日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
基于Docker部署Node.js應(yīng)用環(huán)境

利用Docker部署的服務(wù)器環(huán)境已經(jīng)成為目前主流。為了實現(xiàn)高負載、易于拓展,我們采用Nginx作為反代,Redis記錄訪問日志。(主機服務(wù)器環(huán)境:CentOS7.1)

創(chuàng)新互聯(lián)建站于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目做網(wǎng)站、網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元汪清做網(wǎng)站,已為上家服務(wù),為汪清各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792

1、安裝并啟動Docker

yum update
yum install docker

設(shè)置開機啟動:

systemctl enable docker.service

啟動docker:

systemctl start docker.service

使用:

docker info

可以查看docker的信息,檢查是否安裝成功。

CentOS7的systemctl命令:

systemctl is-enabled servicename.service #查詢服務(wù)是否開機啟動

systemctl enable
.service #開機運行服務(wù)
systemctl disable
.service #取消開機運行

systemctl start
.service #啟動服務(wù)
systemctl stop
.service #停止服務(wù)

systemctl restart
.service #重啟服務(wù)
systemctl reload
.service #重新加載服務(wù)配置文件

systemctl status
.service #查詢服務(wù)運行狀態(tài)
systemctl --failed #顯示啟動失敗的服務(wù)

與老版本對比,以httpd為例,則:

啟動服務(wù)(等同于service httpd start)
systemctl start httpd.service
停止服務(wù)(等同于service httpd stop)
systemctl stop httpd.service

2、在Docker中安裝Nginx

docker run -d -p 80:80 nginx

如果出現(xiàn)Warning:"Usage of loopback devices is strongly discouraged for production use."(據(jù)我所知阿里云、騰訊云及VMware中的CentOS7都會出現(xiàn)):

vim /etc/sysconfig/docker-storage

修改里面的DOCKER_STORAGE_OPTIONS內(nèi)容為:

DOCKER_STORAGE_OPTIONS="--storage-opt dm.no_warn_on_loop_devices=true"


PS:我同時在阿里云和騰訊云執(zhí)行“docker run -d -p 80:80 nginx”這個命令。阿里云因為做了加速,所以很快安裝完成,但騰訊云卡死。解決方法:在安全性要求不高的情況下可以使用國內(nèi)鏡像,否則請使用安全的網(wǎng)絡(luò)環(huán)境和可信來源。

(注意,第二次運行這個命令的時候,請使用完整的REPOSITORY,否則部分服務(wù)器可能會有警告并自動結(jié)束docker,例如:“

docker run -p 80:80 docker.io/nginx


” )

運行

docker pull index.alauda.cn/library/nginx
docker ps
docker stop ID


其中“ID”可以用前幾個字符,只要能唯一識別即可。例如上圖中的容器ID,我們可以使用“1e3c3ce23d5b”,也可以使用“1e3c”來結(jié)束容器。同理,其它docker的操作也是類似的。

docker ps -l


可以查看運行過的所有docker,包括已經(jīng)運行結(jié)束了的docker。

第一個命令中“docker run”后面的“-d”代表是否在后臺運行,去掉這個“-d”執(zhí)行“docker run -p 80:80 nginx”可以看到訪問記錄。使用“Ctrl+C”結(jié)束執(zhí)行,則docker自動退出。因此在服務(wù)器中執(zhí)行時請帶上“-d”參數(shù)。

使用

docker images


可以查看安裝了的所有本地鏡像。

3、在Docker中安裝Node.js并運行Node.js程序

docker pull node


安裝完畢后可以通過

docker run -it --rm node node --version


查看node.js版本號。

接下來上傳你的源代碼到服務(wù)器。例如從公司服務(wù)器克隆源代碼:get clone XXX 。

確保你的源代碼目錄下package.json文件配置正確。

然后

docker run --rm -it -p 3000:1337 --name WebApp -v "$(pwd)":/webapp -w /webapp  node npm install



docker run -itd -p 3000:1337 --name WebApp -v "$(pwd)":/webapp -w /webapp  node npm start


安裝依賴并運行程序。

-v后面的:代表分割的路徑,前者表示宿主的路徑(在這里也就是expressjs項目的主目錄),后者表示映射到Docker容器的路徑。
-w:表示將-v映射的/webapp目錄設(shè)置為work directory,也就是運行node命令的目錄。這個設(shè)置將覆蓋Dockfiie中的設(shè)置:/Data。

其中-itd

    • i,容器的標準輸入保持打開
    • t,Docker分配一個偽終端(pseudo-tty)并綁定到容器的標準輸入
    • d:Docker容器跑在后臺。


--rm,運行結(jié)束后刪除容器。

4、Nginx反代


利用Nginx反代能夠很方便的實現(xiàn)負載均衡。

mkdir config


在/root目錄下創(chuàng)建一個名為config的目錄用于存放Nginx的配置文件。

vim config/nginx.conf


在這個配置文件中配置反代。

server {
listen 80;
server_name 綁定的域名;
location / {
proxy_pass http://localhost:3000;
}
}
docker run -itd -p 80:80 --link WebApp:localhost -v pwd/config/nginx.conf:/etc/nginx/conf.d/host_one.conf  -v pwd/logs:/var/log/nginx nginx


即可。訪問綁定的域名,則可以訪問到node.js的程序。

需要注意的是,“-v pwd/config/nginx.conf:/etc/nginx/conf.d” 中的“pwd/config”代表server文件的本地路徑,意思是當前目錄下的config文件,將會映射到docker容器的nginx配置路徑。而“:”后面的路徑則是服務(wù)器中的路徑,默認的nginx.conf文件中包含“include /etc/nginx/conf.d/.conf;”,也就是默認載入conf.d文件夾中的.conf后綴的文件。最后執(zhí)行這個命令會在當前目錄下創(chuàng)建logs目錄,存放access.log和error.log。剛開始配置的時候,最好去掉“-itd”中的“d”,運行命令查看是否存在問題。如果運行正常,先執(zhí)行“docker rm $(docker ps -a -q)”清除所有已經(jīng)執(zhí)行過的docker,再執(zhí)行帶“d”的命令進入后臺運行。

如果使用SSL證書,則Nginx配置文件按照證書提供商提供的設(shè)置方法設(shè)置,一般要設(shè)置443端口,則在"-p"后映射需要的端口,并且在運行nginx容器的時候設(shè)置SSL的路徑:-v :/etc/nginx/certs。

5、Redis記錄訪問日志

采用Redis進行日志記錄,方便高效。

docker run -d --name redis -p 6379:6379 redis

在啟動node.js程序的時候加上“--link redis:redis”即可。其他MongoDB、MySQL之類的數(shù)據(jù)庫同理。

至于需要記錄什么日志,與具體的項目需求有關(guān)。一般來說我們使用Redis記錄 HTTP 訪問日志和應(yīng)用日志。

6、常用的Docker清理命令

殺死所有正在運行的容器

docker kill $(docker ps -a -q)

刪除所有已經(jīng)停止的容器

docker rm $(docker ps -a -q)

刪除所有未打 dangling 標簽的鏡像

docker rmi $(docker images -q -f dangling=true)

刪除所有已下載的本地鏡像

docker rmi $(docker images -q)

下面關(guān)于Node.js的內(nèi)容你可能也喜歡


網(wǎng)站題目:基于Docker部署Node.js應(yīng)用環(huán)境
網(wǎng)頁地址:http://www.dlmjj.cn/article/djhhsgh.html