Soy un supernovato con respecto a Docker y recientemente cambié un proyecto de App Engine a Cloud Run. Fue fácil, me encantó.
Ahora, sin embargo, estoy tratando de actualizar la imagen (ya que agregué un código nuevo). Entiendo que necesito ingresar a un contenedor real para actualizar una imagen (¿creo?), Pero cuando intento docker run , aparece un error unexpected operator .
Me está volviendo absolutamente loco.
No puedo iniciar el contenedor. No puedo editar mi imagen. No puedo cargar una nueva versión en Cloud Run.
Por lo que puedo deducir, un error unexpected operator tiene que ver con el Dockerfile. Entonces, aquí está mi Dockerfile (según lo proporcionado por Google para implementar una imagen en Cloud Run).
Dockerfile
#Use the official Node.js 10 image #https://hub.docker.com/_/node FROM node:10 #Create and change to the app directory WORKDIR /usr/src/app #Copy application dependency manifests to the container image. #A wild card is used to ensure both package.json AND package-lock.json are copied. #Copying this separately prevents re0running npm install on every code change. COPY *package.json ./ #Install production dependences RUN npm install --only=production #COPY local code to the container image COPY . . #Run the web service on container startup CMD [ "npm", "start" ] El error unexpected operator específico que recibo es /bin/sh: 1: [: npm.: unexpected operator
Sinceramente, no sé qué hacer en este momento. Creo que necesito un segundo par de ojos para examinarlo.
Apuesto a que limpió su código, intencionalmente o no, cuando proporcionó el fragmento de código CMD [ "npm", "start" ] Era casi seguro que era CMD [ "npm" "start" ] cuando creó inicialmente el image e intenté ejecutarlo como un contenedor.
Separando el mensaje de error: /bin/sh: 1: [: npm.: unexpected operator
Le dice que el script de shell tiene un problema en la línea uno. ¿Qué script de shell? El script de shell que se activa con la línea CMD. La parte de la línea 1 se debe a que, tomada en el contexto de la ejecución de CMD, esa es la única línea.
Luego dice, de manera bastante ilegible, que tiene un problema después de la declaración npm. La forma más fácil de causar eso accidentalmente es olvidar la coma.
Dado que aparentemente pudiste poner las cosas en marcha más tarde, lo más probable es que:
Tienes que reconstruir la imagen desde Dockerfile después de cada cambio
docker build --tag="npm_app:latest" -f Dockerfile . docker run npm_app