使用 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 Build Docker";

# ProjectName/SubName
preVersion="multipage/dist";
# Port
visitPort="7415";

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

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

# Generate
randomVersion=${RANDOM};
combinedVersion="${preVersion}:v${randomVersion}"
echo "Generate random version: ${combinedVersion}";

# Build
echo "Build Docker Image: ${combinedVersion}";
docker build -t ${combinedVersion} . -f ./Dockerfile;

# Run
echo "Run Docker";
docker run -d -p ${visitPort}:80 ${combinedVersion};

# Notification
echo "Complete, Visit: http://localhost:${visitPort}";

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

测试端口

telnet 127.0.0.1 7415

五、关闭容器

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

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

版权声明

本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者后除和本文原始地址:https://blog.mazey.net/1762.html

(完)

发表评论

您的电子邮箱地址不会被公开。