文件名称 | 说明 |
dockfile | docker镜像构建描述文件 |
start | ews镜像启动脚本 |
制作nodejs镜像的dockfile如下:
from registry.acs.aliyun.com/open/centos:3.0.0 COPY app.js /acs/user/app.js COPY package.json /acs/user/package.json COPY node-v0.12.7.tar.gz /acs/user/node-v0.12.7.tar.gz RUN cd /acs/user/ && tar -xzf node-v0.12.7.tar.gz && rm -fr node-v0.12.7.tar.gz && \ mv node-v0.12.7 node && \ cd /acs/user/node && ./configure --prefix=/acs/user/local/node/ && make && make install && \ ln -s /acs/user/local/node/bin/* /usr/sbin/ && \ npm install -g grunt-cli && npm config set registry https://registry.npm.taobao.org && \ ln -s /acs/user/local/node/bin/grunt /usr/sbin/grunt ENV NODE_HOME /acs/user/local/node ENV PATH $PATH:/acs/user/local/node/bin:/acs/user/local/node/lib/node_modules/npm/bin/node-gyp-bin RUN source /etc/profile COPY start /acs/bin/start
start脚本如下:
ENV_FILE=/acs/conf/env.properties THIS_PATH="/acs/user/" WEBROOT="/acs/code/" APP_START_FILE="app.js" if [ ! -d "/acs/log" ]; then mkdir -p /acs/log fi if [ ! -d "/acs/data" ]; then mkdir -p /acs/data fi if [ ! -d "$WEBROOT" ]; then mkdir -p $WEBROOT
fi if [ -f $ENV_FILE ]; then CONF_APP_ROOT_PATH=`cat $ENV_FILE |grep -w APP_ROOT_PATH |awk -F "=" '{print $2}'` if [ ! '$CONF_APP_ROOT_PATH' = "" ]; then WEBROOT=${WEBROOT}${CONF_APP_ROOT_PATH} Fi APP_START_FILE=`cat $ENV_FILE |grep -w APP_START_FILE |awk -F "=" '{print $2}'` if [ "$APP_START_FILE" = "" ]; then APP_START_FILE="app.js" Fi Fi if [ ! -d "$WEBROOT" ]; then mkdir -p $WEBROOT fi content=`ls $WEBROOT` if [ "$content" == "" ]; then #if [ ! -d $WEBROOT ]; then cp $THIS_PATH"app.js" $WEBROOT fi PACKAGE_FILE=${WEBROOT}"package.json" if [ -f $ENV_FILE ]; then APP_NPM_INSTALL=`cat $ENV_FILE |grep -w APP_NPM_INSTALL |awk -F "=" '{print $2}'` if [ "$APP_NPM_INSTALL" = "true" ]; then if [ -f $PACKAGE_FILE ]; then cd $WEBROOT npm install else cp $THIS_PATH"package.json" /acs/package.json cd /ace rm -rf node_modules npm install fi fi fi node ${WEBROOT}${APP_START_FILE}