Se dice que Docker ayuda a aislar el entorno de la aplicación y ayuda a los desarrolladores a ejecutar el mismo entorno. PERO todas las guías, tutoriales, cursos, etc. parten de una aplicación ya construida. Entonces, ¿cómo comenzaría una nueva aplicación desde cero, digamos en NodeJS?
Recientemente, comencé a aprender docker, y sí, es útil para empaquetar una aplicación ya creada, si ya tengo todo instalado en mi máquina host local, etc.
PERO, ¿cómo empezaría a desarrollar una nueva aplicación? Por ejemplo, en NodeJS, sin instalación de host de NodeJS, por lo tanto, no puedo iniciar mi carpeta npm init . ¿Cómo instalaría nuevos paquetes, cómo serían persistentes los node_modules y todo eso?
Aquí va una configuración muy básica que utilicé para el empaquetado y la aplicación... ESTO NO FUNCIONA PARA QUE EMPIECE DESDE CERO.
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 upComo se ve en el código, tengo una imagen personalizada, una composición acoplable y un archivo MAKE. Puedo cambiar cualquier parte o todo. Lo que quiero es desarrollar mi aplicación sin nada instalado en mi máquina host aparte de la ventana acoplable, los contenedores deben aislar todo lo necesario para la aplicación, la mejor práctica para conservar cualquier paquete nuevo instalado durante el desarrollo.
Puede seguir " Cómo usar Docker para el desarrollo de Node.js " de Cody Craven :
Utiliza Docker para desarrollar , no solo implementar/ejecutar una aplicación NodeJS.
Ejemplo:
# 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 initLuego puede configurar un entorno de ejecución con:
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 installY crea tu aplicación:
# Replace YOUR-NAMESPACE/YOUR-IMAGE with the name you would like to use. docker build -t YOUR-NAMESPACE/YOUR-IMAGE:dev --target dev .Y ejecutarlo:
# 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¡Todo sin nodo instalado en su estación de trabajo!