我当前正在尝试将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新手,所以任何见解都会有所帮助!
再次感谢!
答案 0 :(得分:0)
我遇到过类似的问题,这些问题是由在一种体系结构(例如AMD64)上构建的docker映像引起的,但是在尝试在另一种体系结构(ARM64)上运行时却失败了。 研究QEMU tutorial
答案 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"
希望这对将来有帮助!