gpt4 book ai didi

Azure Web应用程序运行 "docker run"两次并且部署失败

转载 作者:行者123 更新时间:2023-12-02 19:02:19 26 4
gpt4 key购买 nike

我正在尝试使用 docker 在 azure 上部署我的 Web 应用程序。在我的本地计算机上,它工作正常,但是当我将其部署在 azure 中时,我可以看到它运行 docker run 两次(为什么两次?)

2019-10-02 11:15:26.257 INFO  -  Status: Image is up to date for *******.azurecr.io/****_****:v2.11
2019-10-02 11:15:26.266 INFO - Pull Image successful, Time taken: 0 Minutes and 1 Seconds
2019-10-02 11:15:26.297 INFO - Starting container for site
2019-10-02 11:15:26.298 INFO - docker run -d -p 27757:8000 --name **********-dv_0_a70e438e -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITES_PORT=8000 -e WEBSITE_SITE_NAME=********-dv -e WEBSITE_AUTH_ENABLED=True -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=********-dv.azurewebsites.net -e WEBSITE_INSTANCE_ID=************************* -e HTTP_LOGGING_ENABLED=1 ********.azurecr.io/*****_*****:v2.11 init.sh

2019-10-02 11:15:28.069 INFO - Starting container for site
2019-10-02 11:15:28.070 INFO - docker run -d -p 6078:8081 --name **********_middleware -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITES_PORT=8000 -e WEBSITE_SITE_NAME=******-dv -e WEBSITE_AUTH_ENABLED=True -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=********** -e WEBSITE_INSTANCE_ID=******73***** -e HTTP_LOGGING_ENABLED=1 appsvc/middleware:1907112318 /Host.ListenUrl=http://0.0.0.0:8081 /Host.DestinationHostUrl=http://172.16.1.3:8000 /Host.UseFileLogging=true

这会导致稍后出现错误:

2019-10-02 11:15:30.410 INFO  - Initiating warmup request to container drillx-stuckpipe-dv_0_a70e438e for site *********-dv
2019-10-02 11:19:38.791 ERROR - Container *******-dv_0_a70e438e for site ********-dv did not start within expected time limit. Elapsed time = 248.3813377 sec

在应用程序的日志流中,我可以看到 Web 应用程序已启动,但由于端口 8000 无法访问,我收到此错误:

2019-10-02 11:43:55.827 INFO  - Container ********-dv_0_33e8d6cc_middleware for site ********-dv initialized successfully and is ready to serve requests.
2019-10-02 11:43:55.881 ERROR - Container ********-dv_0_33e8d6cc didn't respond to HTTP pings on port: 8000, failing site start. See container logs for debugging.

在我的Dockerfile中,我在末尾有EXPOSE 8000。我不知道我在这里缺少什么......

FROM python:3.6

# ssh
ENV SSH_PASSWD "root:PWD!"

RUN apt-get update \
&& apt-get -y install \
apt-transport-https \
apt-utils \
curl \
openssh-server \
&& apt-get clean \
&& echo "$SSH_PASSWD" | chpasswd

RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
&& curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list \
&& apt-get update \
&& ACCEPT_EULA=Y apt-get -y install \
msodbcsql17 \
unixodbc-dev \
libxmlsec1-dev \
&& apt-get clean

RUN mkdir /code
WORKDIR code
ADD requirements.txt /code/
RUN pip install -r requirements.txt

COPY . /code/
WORKDIR /code/
RUN ls -ltr

COPY sshd_config /etc/ssh/
COPY init.sh /usr/local/bin/

RUN chmod u+x /usr/local/bin/init.sh
EXPOSE 8000

ENTRYPOINT ["init.sh"]

初始化.sh:

#!/bin/bash
set -e

echo "Starting SSH ..."
service ssh start

gunicorn --bind 0.0.0.0:8000 wsgi

最佳答案

如果我们正确地查看日志,它实际上不会运行两次。 docker运行日志针对不同的镜像。

  1. 您的应用图片
  2. 中间件 - “appsvc/middleware”是用于在 Web App Linux 上处理 Easy Auth/MSI/CORS 的镜像。

https://hajekj.net/2019/01/21/exploring-app-service-authentication-on-linux/

现在我们来看看实际问题,看看第二组日志。它表明您的应用程序未能在预期的时间限制内启动。

Web App Linux 上的默认值为 230 秒,可以使用 WEBSITES_CONTAINER_START_TIME_LIMIT 应用程序设置来增加。最大值可达 1800 秒。

Azure 如何验证应用程序是否已启动? :Azure 将 ping 到端口并等待 HTTP 响应。如果收到,则容器将启动,否则将再次执行 docker run 并继续处理。

哪个端口:https://blogs.msdn.microsoft.com/waws/2017/09/08/things-you-should-know-web-apps-and-linux/#NoPing

关于Azure Web应用程序运行 "docker run"两次并且部署失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58201178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com