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

被折叠的 条评论
为什么被折叠?



