使用Docker容器的NodeJS开发和执行环境
使用Docker进行NodeJS开发和执行环境
在进行NodeJS开发时,我希望能够针对不同的执行环境进行单独的配置并保留下来,同时也希望能够灵活地更改Node版本,因此我使用了Docker容器来创建NodeJS的开发和执行环境。
一种方法是每次执行时创建一个干净的容器,执行结束后将整个容器删除,但这次我选择了一种保持容器运行的方式。
作为使用方法,
-
- 在开始开发之前,先创建一个容器。
-
- 在开发过程中,保持容器的运行状态,并通过执行命令来运行NodeJS。
-
- 在主机(Windows/MacOS)上进行代码编辑。
- 如果需要重新创建容器,可以使用docker-compose down命令来停止容器,然后使用docker-compose up命令来重新启动容器。
我预计是以这种形式。
使用Docker Compose建立并运行容器。
创建以下的docker-compose.yml,用于在轻量化的Alpine上运行NodeJS v16系列的映像。
version: '3'
services:
app:
image: node:16-alpine
container_name: node-container
tty: true
volumes:
- ./src:/src
working_dir: "/src"
将其放在项目的根文件夹中,并将源代码和package.json放置在./src/及其子文件夹中。
当启动容器并运行时,请使用以下命令。
这样一来,容器将保持开启状态。
docker-compose up -d
安装所需库(npm install)
使用上述的docker-compose.yml文件,可以使用app: 来创建名为app的服务。通过指定该服务,可以执行命令。
由于想要执行npm install命令,所以使用docker-compose exec 来实现。
docker-compose exec app npm install
所以,您可以在先前创建的容器上运行npm install。
在执行命令的容器上运行程序。
与使用’npm install’相同的是,我们使用’docker-compose exec’。
docker-compose exec app node main.js
如果package.json文件被正确编写的话,
docker-compose exec app npm start
所以,您可以执行该程序。
写代码并进行开发
在docker-compose.yml文件的volumes部分,将./src目录挂载到容器中,因此在主机(Windows/MacOS)上编辑的内容将始终传递到容器中。
因此,您可以在Windows/MacOS上通过编辑./src/main.js等源代码,并使用docker-compose exec app npm start命令进行开发。
重新排列容器
只需要一个选项,用中文对以下内容进行改写:
由于在尝试和错误中,容器的环境有时会变得肮脏,所以在那时我们会重新创建容器。
这也很容易,在具有docker-compose.yml文件的目录中,
docker-compose down
docker-compose up -d
执行这个操作后,您可以放弃之前使用的容器,并重新创建一个新的容器。
每次都设置一个容器并运行
将NodeJS的package.json文件设置为以下内容:
重点是在script.clean-start的部分。
先删除node_modules目录,然后进行模块安装,最后执行Node。
{
"scripts": {
"start": "node ./main.js",
"clean-start": "rm -r ./node_modules && npm install && npm start"
},
"dependencies": {
}
}
这样做,当您键入以下命令时,会创建一个容器并执行上述操作,完成后会逐个删除容器。
docker-compose run --rm app npm run-script clean-start
请参考以下链接。(Please refer to the following link.)
https://qiita.com/nikadon/items/995c5705ff1171f7484d:
这是一个 Qiita 上的链接,提供了有关 Docker 和 Docker Compose 的相关信息。
https://docs.docker.jp/compose/compose-file.html:
这是一个 Docker 官方文档的链接,提供了有关 Docker Compose 文件的详细解释和说明。