構建一個 預裝 pm2 的 node 項目 docker 底包

Dockerfile: 建立 dockerfile 文件, 命名爲 dockerfile-yourProject-node.8.12.0-pm2node

# MAGE:     yourGroup/yourProject-node.8.12.0-pm2
# VERSION:  1.0.0
# AUTHOR:   ecalf

# 基於網上公開的 docker 鏡像構建,根據你的須要到 hub.docker.com 上找對應的鏡像
FROM mhart/alpine-node:8 MAINTAINER ecalf <ecalf@xxx.com> #backup Dockerfile COPY dockerfile-yourProject-node.8.12.0-pm2 ~/Dockerfile #whereis node RUN ln -s /usr/bin/node /usr/local/bin/node RUN ln -s /usr/bin/node /usr/sbin/node RUN ln -s /usr/bin/node /usr/lib/node # Setting time zone RUN apk update && apk add ca-certificates && \ apk add tzdata && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ echo "Asia/Shanghai" > /etc/timezone #some module installed via cnpm of taobao RUN echo ';fsevents_binary_host_mirror=https://npm.taobao.org/mirrors/fsevents' >> ~/.npmrc RUN echo ';sass_binary_site=https://npm.taobao.org/mirrors/node-sass' >> ~/.npmrc RUN echo ';phantomjs_cdnurl=http://npm.taobao.org/mirrors/phantomjs' >> ~/.npmrc RUN echo ';electron_mirror=https://npm.taobao.org/mirrors/electron' >> ~/.npmrc RUN npm config set registry http://192.168.1.53:4873

#npm install RUN npm install -g pm2 EXPOSE 80 CMD ["node" ,"-v"]

 

 

建立文件夾, 把 dockerfile-yourProject-node.8.12.0-pm2 放進文件夾內,在命令行進入 該文件夾,執行下面命令構建底包,不要 在包含不少額外文件的文件夾內打包,不然準備docker上下文環境會花掉很長時間。docker

docker build -t hub.docker.xxx.com/yourGroup/yourProject-node.8.12.0-pm2:1.0.0 -f dockerfile-yourProject-node.8.12.0-pm2 .

 

 

構建項目的 Dockerfile 文件, 一個例子,具體根據本身項目具體狀況來編寫 npm

# MAGE:     yourGroup/yourProject
# VERSION:  5.8.0  
# AUTHOR:   ecalf


FROM hub.docker.xxx.com/yourGroup/yourProject-node.8.12.0-pm2:1.0.0

MAINTAINER ecalf <ecalf@xxx.com>


# This section for common define
ENV WORK_DIR /home/project/www.xxx.com
ENV LOG_DIR /data/log
ENV CONFIG_DIR /home/project/node/www.xxx.com/confLocal


# This section for import code & config
RUN mkdir -p $WORK_DIR
RUN mkdir -p $LOG_DIR 
RUN mkdir -p $CONFIG_DIR


WORKDIR $WORK_DIR
COPY tar/xxx.com.tar.bz2 $WORK_DIR
RUN tar -xjf xxx.com.tar.bz2
RUN rm xxx.com.tar.bz2COPY conf/process.json $WORK_DIR


EXPOSE 4305

CMD ["pm2-docker", "start", "/home/project/www.xxx.com/process.json"]

 

 

項目鏡像打包命令, 從命令傳入新鏡像的 tag,腳本 命名爲 buildDocker, 則執行  buildDocker 1.0.0json

#!/bin/sh

tag=$1
if [ 'n'$1 = 'n' ]; then
    echo 'please input tag as argument'
else
    sudo docker build -t hub.docker.xxx.com/yourGroup/yourProject:${tag} .
fi

 

項目鏡像的啓動,從命令行傳入要啓動的鏡像 tag,腳本 命名爲 runDocker, 則執行  runDocker 1.0.0, 例子中設置了 環境配置文件夾、日誌文件夾 的 掛載 sass

#!/bin/sh

tag=$1
sudo docker run --name yourProject -p 14305:4305 -v /home/ecalf/work/docker/yourProject/config:/home/project/www.xxx.com/confLocal  -v /home/ecalf/work/docker/yourProject/logs:/home/project/www.xxx.com/logs -v /home/ecalf/work/docker/yourProject/log:/data/log -d hub.docker.xxx.com/yourGroup/yourProject:${tag}
相關文章
相關標籤/搜索