Docker部署nodejs應用並使用PM2作為守護進程


環境:centos7.6 Docker version 18.06.0-ce

mkdir /data
cd /data

 拉取最新keymetrics/pm2:latest-alpine鏡像

docker pull keymetrics/pm2:latest-alpine 

從github上拉取代碼,先要安裝git

git clone https://github.com/keymetrics/pm2-docker-alpine

 

cd /data/pm2-docker-alpine/example-app

編寫Dockerfile,WORKDIR:指定容器的工作目錄 COPY:將當前目錄下的文件拷貝至容器的/home/Service目錄下 EXPOSE 3000:暴露容器內的端口為3000

[root@localhost example-app]# more Dockerfile
FROM keymetrics/pm2:latest-alpine

# Bundle APP files
RUN mkdir -p /home/Service
WORKDIR /home/Service
COPY . /home/Service
#COPY src src/
#COPY package.json .
#COPY pm2.json .

# Install app dependencies
ENV NPM_CONFIG_LOGLEVEL warn
RUN npm install --production

# Show current folder structure in logs
#RUN ls -al -R
EXPOSE 3000
CMD [ "pm2-docker", "start", "pm2.json" ]

 構建容器鏡像,注意最后有個點

docker build -t test_nodepm2 .

 查看構建成功的鏡像

docker images

啟動容器,並將容器的/home/Service映射到宿主機的/data/pm2-docker-alpine/example-app目錄下,便於代碼發布,修改

docker run --name mynodepm2 -d -v /data/pm2-docker-alpine/example-app:/home/Service -p 3000:3000 test_nodepm2

 查詢容器的運行狀態

 

在瀏覽器上訪問容器所在的服務地址+暴露出來的端口,測試服務是否能正常

查詢項目運行狀態

docker exec -it 8205f9c2f6cd pm2 list

docker exec -it 8205f9c2f6cd pm2 monit

 

docker exec -it <container-id> pm2 monit	監控每個進程的CPU /使用情況
docker exec -it <container-id> pm2 list	列出托管流程
docker exec -it <container-id> pm2 show	獲取有關流程的更多信息
docker exec -it <container-id> pm2 reload all	0秒停機時間重新加載所有應用程序

  

更多命令可以執行--help 查看

docker exec -it 8205f9c2f6cd pm2 --help

 如何進入容器內

docker exec -it 8205f9c2f6cd /bin/sh

修改容器內的時區為中國上海,用於和當前時間同步,注意以下所有操作在容器內進行操作

apk add -U tzdata
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
apk del tzdata

 

 

 

 

參考:https://hub.docker.com/r/keymetrics/pm2 如有疑問可以留言

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM