使用 Docker 部署 Node 服务

部署环境:Centos

一、安装 Docker

# 安装
yum install docker -y

# 查看版本
docker version

# 启动
service docker start

# 测试
docker run hello-world

# 设置开机启动
sudo systemctl enable docker

二、配置 Dockerfile

根目录下新增 Dockerfile:

# 基于 node 镜像
FROM node

# 复制宿主机的 start.sh 到 容器 /etc/start.sh
ADD ./build/start.sh /etc/start.sh

# 设置初始命令执行目录
RUN mkdir /www
WORKDIR /www

# 利用缓存
ADD package.json /www
ADD package-lock.json /www
RUN npm ci

COPY . /www

EXPOSE 7414

CMD ["/bin/bash","/etc/start.sh"]

相关 Node 脚本

./build/start.sh

#!/bin/bash

# 启动 node 服务
npm run start;

三、构建镜像

docker build -t project/example:v1 . -f ./Dockerfile

四、运行容器

后台运行容器,并且开放宿主端口 7415 至容器端口 7414。

DockerBuild.sh

echo "Start Docker";

randomVersion=$RANDOM;
echo "Generate random version: $randomVersion";

echo "Build Docker: $randomVersion";
docker build -t mazey/new:v$randomVersion . -f ./Dockerfile;

echo "Stop Docker";
docker ps;
docker ps|awk '{if (NR!=1) print $1}'| xargs docker stop;

echo "Remove Docker";
docker ps -a -q;
docker rm $(docker ps -a -q);

echo "Run Docker";
docker run -d -p 7415:7414 localhost/mazey/new:v$randomVersion;

备注:-d 后台运行,-it 保持终端交互,两个命令互斥只可取其一。

测试端口

telnet 127.0.0.1 7415

五、关闭容器

# 查看所有运行中的容器
docker ps -q

# 关闭所有运行中的容器
docker kill $(docker ps -q)

发表评论

电子邮件地址不会被公开。 必填项已用*标注