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

987
Visualizações
El contenedor Docker no se ejecuta, Error: python3: no se puede abrir el archivo 'flask run --host=0.0.0.0': [Errno 2] No existe tal archivo o directorio

Soy nuevo en Docker y estoy tratando de dockerizar un microservicio de matraz de Python. El archivo docker se compila correctamente, pero al ejecutar el contenedor da un error:

 python3: can't open file 'flask': [Errno 2] No such file or directory

Supongo que hay algún error en mi archivo docker, ya sea en la ruta COPY, ENTRYPOINT o CMD, es decir, los comandos que uso para ejecutar la aplicación del matraz. No soy capaz de averiguar el error.

La estructura de directorios en la máquina Ubuntu es:

 /home/ubuntu/Docker/auth

El directorio auth contiene mi Dockerfile y todos los demás archivos de matraz de Python:

 $ls Dockerfile run.py views.py resources.py models.py

run.py es el archivo matraz principal de Python para su ejecución. Estoy seguro de que hay algún error de sintaxis en la forma en que ejecuto el comando CMD para la aplicación del matraz y no puedo encontrar run.py para su ejecución. No puedo corregir ese error.

La imagen se construye con éxito. Para ejecutar el contenedor que uso:

 docker build <imageid>

Dockerfile

 FROM ubuntu:16.04 MAINTAINER xyz <xyz@yahoo.com> RUN apt-get update \ && apt-get install -y software-properties-common vim \ && add-apt-repository ppa:jonathonf/python-3.6 \ && apt-get update -y \ && apt-get install -y build-essential python3.6 python3.6-dev python3-pip python3.6-venv \ && pip3 install --upgrade pip WORKDIR /auth COPY . /auth RUN pip3 install alembic==0.9.9 \ && pip3 install Flask==1.0.2 \ ENTRYPOINT [ "python3" ] CMD [ "export","FLASK_APP=run.py" ] CMD [ "set", "FLASK_APP=run.py" ] CMD [ "flask", "run", "--host=0.0.0.0" ]

Esperado: la aplicación debería ejecutarse en el contenedor. Real: Python3: no se puede abrir el archivo 'flask': [Errno 2] No existe tal archivo o directorio

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

0

El mejor uso para ENTRYPOINT es establecer el comando principal de la imagen, permitiendo que esa imagen se ejecute como si fuera ese comando (y luego usar CMD como indicadores predeterminados).

https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#entrypoint

mucha gente parece pasar por alto este punto sobre las ENTRYPOINT y CMD Dockerfile.

se supone que la instrucción ENTRYPOINT ejecuta algún ejecutable, que debería ejecutarse cada vez que inicia el contenedor, como iniciar su servidor.

Se supone que el CMD debe incluir las banderas proporcionadas a ese ejecutable, por lo que pueden anularse fácilmente al ejecutar el contenedor.

No estoy seguro de que debas tener más de una instrucción CMD . si necesita ejecutar comandos durante el proceso de compilación, puede usar la instrucción RUN , por ejemplo:

 RUN mkdir some/dir

ahora:

run.py es el archivo matraz principal de Python para la ejecución

por lo tanto, le sugiero que lo defina como su punto de entrada:

 ENTRYPOINT [ "./run.py" ]

comandos que también puede querer ejecutar cada vez que se inicia el contenedor, como la flask run --host=0.0.0.0 puede:

  • mueva ese comando para que se siente dentro del archivo run.py

    o

  • mantenga la línea CMD [ "flask", "run", "--host=0.0.0.0" ] . este comando se pasará como argumento al punto de entrada run.py, por lo que puede ejecutarlo allí. de esa manera, puede anular fácilmente el comando al ejecutar el contenedor con argumentos alternativos.

este material también está en los documentos :

Comprender cómo interactúan CMD y ENTRYPOINT

Las instrucciones CMD y ENTRYPOINT definen qué comando se ejecuta cuando se ejecuta un contenedor. Hay pocas reglas que describen su cooperación.

Dockerfile debe especificar al menos uno de los comandos CMD o ENTRYPOINT.

El PUNTO DE ENTRADA debe definirse al usar el contenedor como un ejecutable.

CMD debe usarse como una forma de definir argumentos predeterminados para un comando ENTRYPOINT o para ejecutar un comando ad-hoc en un contenedor.

CMD se anulará cuando se ejecute el contenedor con argumentos alternativos.

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