使用 VS Code Docker 化 Node.js 应用
亲爱的程序员们,大家好!欢迎阅读我关于Node.js和Docker 的技术文章系列。希望你喜欢!
问题:
您之前从未使用过 Docker,并且是一名 JavaScript 开发者。您想了解如何将容器与 Node.js 结合使用。开始吧!
1. 设置
在本教程中,我将使用我最喜欢的编辑器 Visual Studio Code。您还需要安装Nodejs和 Docker。我使用的是 Windows 系统,因此我从这里下载了 Windows 版 Docker。
下一个命令创建一个名为 test-node-app 的新文件夹,然后创建 npm 包文件并在 VS Code 中打开文件夹。
mkdir test-node-app && cd test-node-app && npm init -y && code .
另请安装 express 来创建服务器。
npm i express
2. 创建基本 Node 应用
打开 package.json 文件并进行如下修改:
{
"name": "test-node-app",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"start": "node server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
}
}
现在添加名为 server.js 的新文件:
const express = require("express"); | |
const PORT = 8080; | |
const HOST = '0.0.0.0'; | |
const app = express(); | |
app.get("/", (req, res) => { | |
res.send("Hello from Node.js app \n"); | |
}); | |
app.listen(PORT, HOST, () => { | |
console.log(`Running on http://${HOST}:${PORT}`); | |
}); |
const express = require("express"); | |
const PORT = 8080; | |
const HOST = '0.0.0.0'; | |
const app = express(); | |
app.get("/", (req, res) => { | |
res.send("Hello from Node.js app \n"); | |
}); | |
app.listen(PORT, HOST, () => { | |
console.log(`Running on http://${HOST}:${PORT}`); | |
}); |
超级基础应用已准备就绪。现在我们在本地测试一下。在 app 文件夹中运行以下命令:
npm start
您应该在控制台中看到以下内容,并能够通过链接http://localhost:8080/访问服务器
3.准备Docker文件
要构建镜像,我们需要一个 Docker 文件。创建一个名为Dockerfile的文件
touch Dockerfile
并将其粘贴到里面:
FROM node:8
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json ./
RUN npm install
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "npm", "start" ]
该文件告诉 docker 下载版本 8 的 Node.js,为应用程序创建目录,复制package.json文件,为 node_modules 运行npm install,告诉该应用程序要使用哪个端口,最后使用 npm start 运行它。
呃……很多啊?😮
我们还需要一个名为.dockerignore的文件。创建并粘贴以下内容:
node_modules
npm-debug.log
4. 构建 Docker 镜像
首先,使用此命令构建我们的图像。
docker build -t test-node-app .
等待它完成,现在我们就可以看到创建的新图像。
docker images
如果您使用的是 VS Code,可以安装一个非常实用的Docker 扩展。它会在侧面板上添加一个按钮,用于打开 Docker 资源管理器。在这里,您可以查看所有可用的镜像和容器。您还可以在这里运行、停止和删除容器,这非常实用。
如果要删除图像,请运行以下命令:
docker rmi <image id>
5. 运行 Docker 容器(最后)
是时候基于我们的镜像(隔离环境中的应用程序)运行一个容器了。重要的是我们需要告诉 Docker 如何映射端口。现在我们运行容器并将 8080 端口映射到 49165。
docker run -p 49165:8080 -d test-node-app
这意味着我们现在可以通过此 URL http://localhost:49165/访问该应用程序
还有另一个非常有用的命令可以查看所有正在运行的容器:
docker ps
您可以通过右键单击 VS Code Docker Extension 或使用此命令来停止容器:
docker stop <container id>
现在,如果你docker ps
再次运行,你将看不到正在运行的容器。如果你想查看已停止的容器,你需要 —all
在命令中添加如下标志:
docker ps -a
如果您还有一些疑问,您可以轻松参考此处的官方文档。
🚀 如果你从那篇文章中读到了什么有趣的内容,请点赞并关注我,我会分享更多文章。谢谢你,亲爱的程序员!😏
文章来源:https://dev.to/vguleaev/dockerize-a-node-js-app-with-vs-code-29c4