据说Docker可帮助隔离应用程序环境,并帮助开发人员运行相同的环境.但是所有指南,教程,课程等均从已构建的应用程序开始.那么,如何在NodeJS中从头开始一个新的应用程序呢?
所以最近我开始学习docker,是的,如果我已经在本地主机中安装了所有东西,那么它对于打包已经构建的应用程序很有用.
但是我将如何开始开发新的应用程序?例如在
NodeJS,没有主机安装的NodeJS,因此我无法npm初始化我的文件夹.我将如何安装新软件包,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的情况下在主机上未安装任何东西的情况下开发我的应用程序,容器应隔离该应用程序所需的所有内容,最佳做法是在开发过程中保留安装的任何新软件包.
最佳答案
您可以在Cody Craven之前跟随“ How to use Docker for Node.js development”:
它确实使用Docker本身进行开发,而不仅仅是部署/运行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
全部没有在工作站上安装节点!