Node项目容器化部署

本文详细介绍了如何将Node.js项目进行Docker容器化部署,包括编写Dockerfile,构建镜像,启动容器,并特别提醒在进入alpine容器时需要注意其使用的是ash Shell而非bash。

一:Dockerfile

FROM node:8.11.1-alpine
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk update && \
    apk add --no-cache python2 make gcc g++ linux-headers && \
    rm -rf /var/cache/apk/* /tmp/* /var/tmp/* $HOME/.cache
WORKDIR /app
ADD exo-browser.tar.gz /app/
RUN npm install
EXPOSE 8112
CMD ["npm","run","start"]

说明:

1:apk安装的为该node项目所需依赖
2:exo-browser.tar.gz为node项目文件
3:CMD后面为启动项目的命令,各个项目的启动命令可能不一样,具体看项目的package.json文件

二:构建镜像

# 在Dockerfile目录下执行
docker build -t browser .		# 后面有个点

三:启动容器

docker run -d \
--name browser \
--restart always \
-p 8112:8112 \
--link redis:redishost \
--link mysql:dbhost \
browser

说明:

1--link redis:redishost  # redis为启动的redis容器名,redishost是个别名,web程序访问mysq数据可以通过其访问
2--link mysql:dbhost	   # mysql为启动的mysql容器名,dbhost是个别名,web程序访问mysq数据可以通过其访问

node项目配置文件中链接数据库为:

$ cat config.js 
exports.redis = {
    host: 'redishost',
    port: '6379',		# redis容器映射到宿主机的端口为10008,而reids容器内的端口为6379。这里直接写redis容器里的端口
    password: 'xxxxxx',
    db:0
};

exports.mysql_master = {
    host: 'dbhost',
    port: '3306',
    user: 'xxxxx',
    password: 'xxxxxx',
    database:'xxxxxx',
};

四:进入alpine容器

docker run -it --rm browser ash

alpine的交互式 Shell是ash不是bash,使用bash会提示not found。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值