1 前言
Express.js 是基于 Node.js 的快速、轻量级的 Web 应用框架,提供了简洁而灵活的 API,适合开发 Web 应用和 RESTful API。
但是在centos7系列中,很多库比较老旧,升级起来比较费事,导致高版本的nodejs安装比较困难,因此今天分享一篇docker启动nodejs项目的案例教程。
2 文件
2.1 Dockerfile
# 使用官方 Node.js LTS 版本作为基础镜像
FROM node:16
# 设置工作目录
WORKDIR /usr/src/app
# 复制 package.json 和 package-lock.json(如果存在)到工作目录
COPY package*.json ./
# 安装依赖
RUN npm install
# 将项目的所有文件复制到工作目录
COPY . .
# 暴露应用运行的端口(与 Express 项目中设置的端口一致)
EXPOSE 3000
# 启动应用
CMD ["npm", "start"]
2.2 package.json
{
"name": "express-app",
"version": "1.0.0",
"description": "有勇气的牛排,docker部署express框架测试",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "^4.21.1"
}
}
安装依赖
npm i
2.3 app.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('有勇气的牛排,docker部署express框架测试');
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`服务端已启动 http://localhost:${PORT}`);
});
启动项目测试
npm start

3 构建与运行容器
构建镜像
docker build -t express-server-test .

运行容器
docker run -it -p 3000:3000 express-server-test
docker run -d -p 3000:3000 --name express-server-test express-server-test

<h2><a id="1__0"></a>1 前言</h2>
<p><strong>Express.js</strong> 是基于 Node.js 的快速、轻量级的 Web 应用框架,提供了简洁而灵活的 API,适合开发 Web 应用和 RESTful API。</p>
<p>但是在centos7系列中,很多库比较老旧,升级起来比较费事,导致高版本的nodejs安装比较困难,因此今天分享一篇docker启动nodejs项目的案例教程。</p>
<h2><a id="2__6"></a>2 文件</h2>
<h3><a id="21_Dockerfile_8"></a>2.1 Dockerfile</h3>
<pre><code class="lang-dockerfile"># 使用官方 Node.js LTS 版本作为基础镜像
FROM node:16
# 设置工作目录
WORKDIR /usr/src/app
# 复制 package.json 和 package-lock.json(如果存在)到工作目录
COPY package*.json ./
# 安装依赖
RUN npm install
# 将项目的所有文件复制到工作目录
COPY . .
# 暴露应用运行的端口(与 Express 项目中设置的端口一致)
EXPOSE 3000
# 启动应用
CMD ["npm", "start"]
</code></pre>
<h3><a id="22_packagejson_33"></a>2.2 package.json</h3>
<pre><div class="hljs"><code class="lang-json"><span class="hljs-punctuation">{</span>
<span class="hljs-attr">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"express-app"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"version"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"1.0.0"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"description"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"有勇气的牛排,docker部署express框架测试"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"main"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"app.js"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"scripts"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"start"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"node app.js"</span>
<span class="hljs-punctuation">}</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"dependencies"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"express"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"^4.21.1"</span>
<span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
</code></div></pre>
<p>安装依赖</p>
<pre><div class="hljs"><code class="lang-shell">npm i
</code></div></pre>
<h3><a id="23_appjs_56"></a>2.3 app.js</h3>
<pre><div class="hljs"><code class="lang-js"><span class="hljs-keyword">const</span> express = <span class="hljs-built_in">require</span>(<span class="hljs-string">'express'</span>);
<span class="hljs-keyword">const</span> app = <span class="hljs-title function_">express</span>();
app.<span class="hljs-title function_">get</span>(<span class="hljs-string">'/'</span>, <span class="hljs-function">(<span class="hljs-params">req, res</span>) =></span> {
res.<span class="hljs-title function_">send</span>(<span class="hljs-string">'有勇气的牛排,docker部署express框架测试'</span>);
});
<span class="hljs-keyword">const</span> <span class="hljs-variable constant_">PORT</span> = <span class="hljs-number">3000</span>;
app.<span class="hljs-title function_">listen</span>(<span class="hljs-variable constant_">PORT</span>, <span class="hljs-function">() =></span> {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">`服务端已启动 http://localhost:<span class="hljs-subst">${PORT}</span>`</span>);
});
</code></div></pre>
<p>启动项目测试</p>
<pre><div class="hljs"><code class="lang-shell">npm start
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/21b190f4037e32b2eadc378c08988736.png" alt="image.png" /></p>
<h2><a id="3__80"></a>3 构建与运行容器</h2>
<p>构建镜像</p>
<pre><div class="hljs"><code class="lang-shell">docker build -t express-server-test .
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/d6a6072dd7c5d440b00731ead6275a99.png" alt="image.png" /></p>
<p>运行容器</p>
<pre><div class="hljs"><code class="lang-shell">docker run -it -p 3000:3000 express-server-test
docker run -d -p 3000:3000 --name express-server-test express-server-test
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/5038c58dca2544ecfe631c0686a31c90.png" alt="image.png" /></p>
留言