standard_init_linux.go:207:exec用户进程导致“ exec格式错误”

时间:2019-11-22 18:41:23

标签: python linux azure docker

我当前正在尝试将Docker应用程序部署到容器注册表Azure中。我可以在本地运行我的docker映像,但是当我将其部署到azure时,它会给我这个错误:

standard_init_linux.go:207:exec用户进程导致“ exec格式错误”  这是我的dockerfile:

*Pull a pre-built alpine docker image with nginx and python3 installed

*this image is from docker community, its small so our upload to contain will be faster

FROM tiangolo/uwsgi-nginx-flask:python3.7

FROM ubuntu:latest

ENV LISTEN_PORT=8400

EXPOSE 8400

RUN apt-get update && apt-get install -y /

    curl apt-utils apt-transport-https debconf-utils gcc build-essential g++-5\

    && rm -rf /var/lib/apt/lists/*

*adding custom MS repository

RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

RUN curl https://packages.microsoft.com/config/ubuntu/19.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql17

*install SQL Server drivers

RUN apt-get update && ACCEPT_EULA=Y apt-get -f install -y unixodbc-dev

*install SQL Server tools

RUN apt-get update && ACCEPT_EULA=Y apt-get install -y mssql-tools

RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

RUN /bin/bash -c "source ~/.bashrc"

RUN apt-get update && apt-get install -y python3-pip

RUN apt-get update && apt-get install -y libpq-dev

*install additional requirements from a requirements.txt file

COPY requirements.txt /

RUN pip3 install --no-cache-dir -r /requirements.txt

COPY app/. /.

CMD python3 wsgi.py 

因为我不了解azure如何调用我的Docker映像,所以我一直尝试使用不同的CMD版本,例如:

CMD [“ python3”,“ wsgi.py”,“ runserver”,“ 0.0.0.0:8400”]

但无济于事。我在互联网上查找解决方案,但实际上找不到任何解决方案。那里有人对我的错有深刻的见解吗?创建.sh文件是否必要?我是linux新手,所以任何见解都会有所帮助!

再次感谢!

2 个答案:

答案 0 :(得分:0)

我遇到过类似的问题,这些问题是由在一种体系结构(例如AMD64)上构建的docker映像引起的,但是在尝试在另一种体系结构(ARM64)上运行时却失败了。 研究QEMU tutorial

docker ref

答案 1 :(得分:0)

我实际上找到了问题的答案。对于Windows用户,我们实际上需要将she-bang放在我们的系统上,也许是在创建.sh文件,还是将she-bang放在我们的python入口处,例如:

将shebang设置为您的py文件:

#!/usr/bin/env python 

或与Dockerfile中一样设置命令。在这里找到答案: standard_init_linux.go:211: exec user process caused "exec format error"

希望这对将来有帮助!