Docker可以帮助隔离应用程序环境,并帮助开发人员运行相同的环境。但是所有指南,教程,课程等均从已构建的应用程序开始。那么,如何在NodeJS中从头开始一个新应用程序?
所以最近我开始学习docker,是的,如果我已经在本地主机中安装了所有东西,那么它对于打包已经构建的应用程序很有用。
但是我将如何开始开发新的应用程序?例如在
NodeJS,没有主机安装的NodeJS,因此无法npm init
我的文件夹。我将如何安装新软件包,node_modules
如何保持持久性以及所有这些?
这是我用于包装和应用程序的一些非常基础的设置。...这不适合我从头开始。
FROM node:10-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
CMD [ "npm", "start" ]
version: '3'
services:
example-service:
build: .
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
ports:
- 3000:3000
- 9229:9229
command: npm start
dev:
docker-compose up
如代码中所示,我有一个自定义图像,一个docker-compose和一个makefile。我可以更改其中的任何一个或全部。我想要的是在不使用docker的情况下在主机上未安装任何东西的情况下开发应用程序,容器应隔离该应用程序所需的所有内容,最佳做法是在开发过程中保留安装的任何新软件包。
答案 0 :(得分:2)
您可以在How to use Docker for Node.js development之后跟随“ Cody Craven”:
它确实使用Docker本身进行 develop 开发,而不仅仅是部署/运行NodeJS应用程序。
示例:
# This will use the node:8.11.4-alpine image to run `npm init`
# with the current directory mounted into the container.
#
# Follow the prompts to create your package.json
docker run --init --rm -it -v "${PWD}:/src" -w /src node:8.11.4-alpine npm init
然后您可以使用以下命令设置执行环境:
FROM node:8.11.4-alpine AS dev
WORKDIR /usr/src/app
ENV NODE_ENV development
COPY . .
# You could use `yarn install` if you prefer.
RUN npm install
并构建您的应用程序:
# Replace YOUR-NAMESPACE/YOUR-IMAGE with the name you would like to use.
docker build -t YOUR-NAMESPACE/YOUR-IMAGE:dev --target dev .
并运行它:
# The `YOUR COMMAND` portion can be replaced with whatever command you
# would like to use in your container.
docker run --rm -it --init -v "${PWD}:/usr/src/app" YOUR-NAMESPACE/YOUR-IMAGE:dev YOUR COMMAND
所有工作站上均未安装节点!