Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

434
Visualizações
Pasar NODE_ENV a docker para ejecutar scripts de package.json

Este es mi archivo acoplable:

 FROM node:6-onbuild RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app/ RUN npm install COPY . /usr/src/app ENV PORT 80 EXPOSE ${PORT} CMD [ "npm","run", "start" ]

y en package.json tengo esto:

 "scripts": { "start": "node start.js", "stagestart": "NODE_ENV=content-staging node start.js" }

el script de start es para producción, ahora quiero una forma de ejecutar el script de preparación en dockerfile. ¿Hay alguna manera de leer NODE_ENV dentro de dockerfile, para que pueda tener un dockerfile que maneje la puesta en escena y la producción?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Aquí hay dos posibles implementaciones.

FYI: no necesita mencionar NODE_ENV en package.json si ya configuró NODE_ENV en el nivel del sistema o configuró NODE_ENV durante el tiempo de compilación o el tiempo de ejecución en Docker.

Aquí Dockerfile es igual pero solía usar una imagen base alpine

 FROM node:alpine RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app/ RUN npm install COPY . /usr/src/app ENV PORT 3000 ARG DOCKER_ENV ENV NODE_ENV=${DOCKER_ENV} RUN if [ "$DOCKER_ENV" = "stag" ] ; then echo your NODE_ENV for stage is $NODE_ENV; \ else echo your NODE_ENV for dev is $NODE_ENV; \ fi EXPOSE ${PORT} CMD [ "npm","run", "start" ]

cuando construyes este Dockerfile con este comando

 docker build --build-arg DOCKER_ENV=stag -t test-node .

Verás en la capa

 ---> Running in a6231eca4d0b your NODE_ENV for stage is stag

Cuando ejecute este contenedor docker y ejecute este comando, su salida será

 /usr/src/app # echo $NODE_ENV stag

El enfoque más simple es la misma imagen y pero establece la variable de entorno en tiempo de ejecución

Su Dockerfile

 FROM node:alpine RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app/ RUN npm install COPY . /usr/src/app ENV PORT 3000 EXPOSE ${PORT} CMD [ "npm","run", "start" ]

Ejecute esta imagen acoplable con este comando

 docker build -t test-node . docker run --name test -e NODE_ENV=content-staging -p 3000:3000 --rm -it test-node ash

Entonces, cuando ejecute este comando en el contenedor, verá

 /usr/src/app # echo $NODE_ENV content-staging

Así es como puede iniciar su aplicación de nodo con NODE_ENV sin configurar la variable de entorno en package.json. Entonces, si su configuración de nodejs se basa en NODE_ENV , debe elegir la configuración de acuerdo con NODE_ENV .

over 4 years ago · Santiago Trujillo Relatório

0

Puede usar la instrucción ENV para obtener la variable de entorno como una variable de entorno dentro del contenedor. Tenga un script de punto de entrada que inyecte la variable de entorno disponible (quizás algo tan simple como sed) en lugar de un nombre de variable de marcador de posición que se encuentra en su archivo package.json. Luego inicie su aplicación de nodo. Obviamente, esto requerirá que realice algunos cambios en su Dockerfile con respecto al script de punto de entrada, etc.

Así es como he logrado tales cosas en el pasado.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda