docker pull node:latest
# 使用最新版本的Node.js作为基础镜像 FROM node:latest # 设置工作目录为/app WORKDIR /app # 更改 NPM 下载源为淘宝源,并设置为全局持久化 RUN npm config set -g registry https://registry.npm.taobao.org # 将当前目录中的package.json和package-lock.json复制到容器中 COPY package*.json ./ # 安装依赖项 RUN npm install # 将当前目录中的所有文件复制到容器中 COPY . . # 暴露端口 EXPOSE 3000 # 启动应用程序 CMD ["npm", "start"]
在包含 Dockerfile 的项目根目录下执行构建命令,注意最后的 小数点:
docker build -t my-node-app .
假设你的 Node.js 应用代码位于本地 /opt/module/node/ 目录,你想将此目录挂载到容器中的 /app 目录,以便于在宿主机编辑代码并在容器中实时更新,可以执行以下命令:
docker run -it -p 3000:3000 --name my-node-app -v /opt/module/node/:/app my-node-app
为了演示,我们可以在本地创建一个简单的 Express 应用。例如,在本地目录 /opt/module/node/ 创建 app.js 文件:
// /opt/module/node/app.js const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Hello from Node.js in Docker!'); }); app.listen(port, () => { console.log(`App is running at http://localhost:${port}`); });
# 进入容器内部 docker exec -it my-node-app bash # 在容器内部安装Express npm install express # 启动Node.js应用 node app.js
在宿主机上打开浏览器,访问 http://localhost:3000,如果能看到 “Hello from Node.js in Docker!” 的消息,则表明 Node.js 已经在 Docker 容器中成功安装和部署,并且 Web 服务可以通过网络访问。