一套从alpine基本镜像到node8.16.2的全套dockerfile
这个花了点时间,可以正式跑起来了。
加了常用的工具及中文时区,非root帐号。
除了pm2,其它的module放到应用程序本身的node_modules目录下来实现的。
一,3rd_part/node/node:8.16.2-alpine
FROM alpine:3.9
ENV NODE_VERSION 8.16.2
RUN addgroup -g 1000 node \
&& adduser -u 1000 -G node -s /bin/sh -D node \
&& apk add --no-cache \
libstdc++ \
&& apk add --no-cache --virtual .build-deps \
binutils-gold \
curl \
g++ \
gcc \
gnupg \
libgcc \
linux-headers \
make \
python \
# gpg keys listed at https://github.com/nodejs/node#release-keys
&& for key in \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
FD3A5288F042B6850C66B31F09FE44734EB7990E \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
77984A986EBC2AA786BC0F66B01FBB92821C587A \
8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
4ED778F539E3634C779C87C6D7062848A1AB005C \
A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
B9E2F5981AA6E0CD28160D9FF13993A75599653C \
; do \
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
done \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xf "node-v$NODE_VERSION.tar.xz" \
&& cd "node-v$NODE_VERSION" \
&& ./configure \
&& make -j$(getconf _NPROCESSORS_ONLN) V= \
&& make install \
&& apk del .build-deps \
&& cd .. \
&& rm -Rf "node-v$NODE_VERSION" \
&& rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt
ENV YARN_VERSION 1.19.1
RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
&& for key in \
6A010C5166006599AA17F08146C2130DFD2497F5 \
; do \
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
done \
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
&& mkdir -p /opt \
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
&& apk del .build-deps-yarn
COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]
CMD [ "node" ]
二,3rd_part/node/p4k_node:8.16.2-alphine
From 3rd_part/node/node:8.16.2-alpine
MAINTAINER P4K
RUN echo -e "export http_proxy=http://xxx.local:8080 \nexport https_proxy=http://xxx.local:8080 \nexport ftp_proxy=http://xxx.local:8080 " >>/etc/profile.1
ENV TIME_ZONE Asia/Shanghai
ENV SIS_HOME=/xxx/appsystems
ENV APP_HOME=${SIS_HOME}/webapps
ENV CONFIG_HOME=${SIS_HOME}/webconfigs
ENV LOG_HOME=${SIS_HOME}/weblogs
RUN source /etc/profile.1 \
&& npm --registry https://registry.npm.taobao.org install pm2@3.5.1 -g \
&& sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories\
&& apk update \
&& apk add --no-cache busybox-extras tzdata \
&& echo "${TIME_ZONE}" > /etc/timezone \
&& ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime \
&& apk add --no-cache zip unzip curl wget vim bash \
&& alias ll='ls -lh' \
&& addgroup -g 000 -S docker \
&& adduser -u 000 -D -S docker -G docker \
#&& npm --registry http://r.cnpmjs.org install pm2@3.5.1 -g \
&& mkdir -p /home/docker \
&& mkdir -p /p4k/temp/ \
&& mkdir -p ${CONFIG_HOME} \
&& mkdir -p ${APP_HOME} \
&& mkdir -p ${LOG_HOME} \
&& chown -R docker.docker /xxx/ /p4k/ /home/docker \
&& chmod 755 -R /xxx/ /p4k/ /home/docker \
&& echo "finished!!!!"
WORKDIR ${APP_HOME}
USER docker
三,应用
FROM 3rd_part/node/p4k_node:8.16.2-alphine
MAINTAINER P4k
COPY ${PACKAGE_NAME} /p4k/temp/${PACKAGE_NAME}
COPY bootstart.sh /p4k/bootstart.sh
CMD sh /p4k/bootstart.sh
四,bootstart.sh示例
#!/bin/bash
set -ex
config_dir="/xxx/webconfigs"
app_dir="/xxx/webapps"
log_dir="/xxx/weblogs"
war_dir="/p4k/temp/"
mkdir -p "$war_dir/deploy_temp"
war_file=`ls ${war_dir}/*.zip`
unzip ${war_file} -d $war_dir/deploy_temp
cp -ar $war_dir/deploy_temp/common/* ${app_dir}/
if [ ${ENV_NAME}="fat" ] || [ ${ENV_NAME}="uat" ] || [ ${ENV_NAME}="prd" ];then
echo "deploying the environment is:" ${ENV_NAME}
cp_str="${war_dir}/deploy_temp/differ/${ENV_NAME}_k8s/config/* ${config_dir}/"
echo ${cp_str}
cp -ar ${cp_str}
if [ -f ${war_dir}/deploy_temp/differ/${ENV_NAME}_k8s/config/k8s.properties ]; then
cp -ar ${war_dir}/deploy_temp/differ/${ENV_NAME}_k8s/config/k8s.properties $log_dir
fi
else
echo "please give ENV first using '-e' when docker run"
fi
rm -rf ${war_dir}
cd $app_dir
pm2 start websocket.js --no-daemon --max-memory-restart 1G
一套从alpine基本镜像到node8.16.2的全套dockerfile的更多相关文章
- Docker之Alpine制作镜像且上传至阿里云
目的: Alpine制作jdk镜像 Alpine制作jre镜像(瘦身) Docker镜像上传至阿里云 Alpine制作jdk镜像 alpine Linux简介 Alpine Linux是一个轻型Lin ...
- alpine docker 镜像 时区问题
1. 时区处理 RUN apk update && apk add curl bash tree tzdata \ && cp -r -f /usr/share/zon ...
- alpine基础镜像使用
关于Alpine的相关知识,可以参考下边的链接 https://yeasy.gitbooks.io/docker_practice/content/cases/os/alpine.html 一. al ...
- 使用alpine为基础镜像Q&A
作为go应用存在二进制文件却不能执行 明明镜像中有对应的二进制文件,但是执行时却提示 not found 或 no such file 或 standard_init_linux.go:211: ex ...
- 构建Docker镜像两种方式的比较-Dockerfile方式和S2I方式
前言 写Dockerfile是构建Docker镜像最通常的方式,接触过Docker的童鞋多少了解一些.前段时间研究OpenShift(paas的一种),发现了另外一种构建Docker镜像的方式:S2I ...
- [转] 构建Docker镜像两种方式的比较-Dockerfile方式和S2I方式
原文地址:https://www.cnblogs.com/tianshifu/p/8127837.html 前言 写Dockerfile是构建Docker镜像最通常的方式,接触过Docker的童鞋多少 ...
- 做自己的docker镜像(基于ubuntu:16.04)
基于ubuntu:16.04 apt-get update -y apt-get install sudo -y 换源 sudo apt-get install vim sudo vim /etc/a ...
- docker镜像ubuntu封装jdk1.8.0【dockerfile】
github地址:https://github.com/laileman/Docker/Dockerfile/ubuntu-jdk1.8.0_172 1-目录结构 2- dockerfile内容 3- ...
- 基于alpine用dockerfile创建的tomcat镜像
1.下载alpine镜像 [root@docker43 ~]# docker pull alpine Using default tag: latest Trying to pull reposito ...
随机推荐
- VirtualBox设置自动适应屏幕
设备 --> 安装增强功能 等待安装完成,就能自动适应屏幕大小了
- 关于CCTextFieldTTF的几点注意事项
TextField 基本名词 IME:输入法编辑器 placeholder:默认显示 事项 两种创建方式,一种是以文字的大小为准,此时如果如果内容超过编辑框大小,会自动扩展:另一种添加了对编辑框大小的 ...
- 关于jvm的常识介绍
1.关于jvm的组成(只介绍1.8,以前的版本不多介绍) vm stack,native method stack,program counter register,heap,metaspace 2. ...
- misc-3-1
无后缀,用winhex发现是rar,添加后缀解压,依据是无后缀,丢到kali,是一个流量数据包 TCP追踪流在第五个数据包发现flag.rar 导出对象 选择HTTP 找到flag.rar 然后丢到你 ...
- Leetcode 1239. 串联字符串的最大长度
地址 https://leetcode-cn.com/problems/maximum-length-of-a-concatenated-string-with-unique-characters/s ...
- uva 10189 扫雷
简单的输入 判断周围上下左右组合的八个方向的雷 然后输出 代码 #include <iostream> #include <memory.h> using namespace ...
- LG5337/BZOJ5508 「TJOI2019」甲苯先生的字符串 线性动态规划+矩阵加速
问题描述 LG5337 BZOJ5508 题解 设\(opt_{i,j}(i \in [1,n],j \in [1,26])\)代表区间\([1,i]\),结尾为\(j\)的写法. 设\(exist_ ...
- Please make sure you have the correct access rights and the repository exists.
参考:https://blog.csdn.net/jingtingfengguo/article/details/51892864,感谢老哥. 从码云克隆项目到新的服务器上,报错: Please ma ...
- Regex quick reference
近段时间,接触正则较多,常规法则如下,网摘内容,方便查阅.
- HTML连载47-设计思想、浮动元素高度问题
一.设计网页的思想 拿到需求之后我们先对各个模块(盒子)进行划分,然后从外到内进行设计(1)设计一个盒子最基本的设计大致包括背景颜色(其实用于识别),宽,高,边界浮动流还是标准流. (2)然后盒子和盒 ...