如何从头开始在Docker容器中构建新应用程序?

时间:2019-06-09 20:31:42

标签: docker docker-compose dockerfile development-environment

据说

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的情况下在主机上未安装任何东西的情况下开发应用程序,容器应隔离该应用程序所需的所有内容,最佳做法是在开发过程中保留安装的任何新软件包。

1 个答案:

答案 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

所有工作站上均未安装节点!