簡體   English   中英

Azure Web 自定義容器中的應用程序,環境變量未從應用程序服務傳播到容器

[英]Azure Web App in custom container, env variables not propagated from app service to container

So I've deployed my app to azure app services with custom docker container running on Alpine, but none of the configured environment variables are available in bash when I SSH to it. 應用程序入口點本身可以看到所有變量並且應用程序運行正常。 我能夠在微軟文檔中挖掘的信息說所有配置變量都應該被傳遞,但不知何故它們不是......歡迎任何建議

是一個類似於我的問題的帖子,但它也沒有提供任何解決方案。

這是我的 dockerfile


# pull official base image
FROM python:3.7-alpine AS build-python

# Copy over and install requirements files
RUN mkdir requirements

COPY requirements/production.txt /requirements/
COPY requirements/common.txt /requirements/
COPY ./requirements.txt /
RUN pip wheel --no-cache-dir --no-deps --wheel-dir /wheels -r requirements.txt

FROM python:3.7-alpine

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV DEBUG 0
ENV DJANGOENV staging

# install psycopg2
RUN apk update \
    && apk add --virtual build-deps pkgconfig python3-dev openssl-dev libxml2-dev libxslt-dev libffi-dev musl-dev make gcc \
    && apk add postgresql-dev \
    && pip install psycopg2

RUN apk add openssh \
     && echo "root:Docker!" | chpasswd
COPY sshd_config /etc/ssh/

RUN /usr/bin/ssh-keygen -A

EXPOSE 2222
EXPOSE 80
EXPOSE 8000

COPY --from=build-python /wheels /wheels
COPY --from=build-python requirements .
COPY --from=build-python requirements.txt .
RUN pip install --no-cache /wheels/*

RUN apk del build-deps

# set work directory
WORKDIR /app

# copy project
COPY . .

# add and run as non-root user
#RUN adduser -D myuser
#USER myuser

# run server
CMD sh start_azure_server.sh

這是我的開始腳本

#!/bin/sh

echo "Starting ssh daemon!!!"
/usr/sbin/sshd

echo "Collecting static and starting server!!!"

python manage.py collectstatic --noinput &&
daphne flexitkt.asgi:application -b 0.0.0.0 -p $PORT --proxy-headers
python manage.py rqworker

這是我的環境配置

[
  {
    "name": "AWS_ACCESS_KEY",
    "value": "*****************",
    "slotSetting": false
  },
  {
    "name": "AWS_REGION",
    "value": "eu-north-1",
    "slotSetting": false
  },
  {
    "name": "AWS_SECRET_KEY",
    "value": "**********",
    "slotSetting": false
  },
  {
    "name": "CKEDITOR_CLOUDSERVICE_UPLOAD_TOKEN",
    "value": "*************",
    "slotSetting": false
  },
  {
    "name": "CKEDITOR_CLOUDSERVICE_UPLOAD_URL",
    "value": "*************",
    "slotSetting": false
  },
  {
    "name": "CKEDITOR_CLOUDSERVICE_WS_URL",
    "value": "**************",
    "slotSetting": false
  },
  {
    "name": "CKEDITOR_ENVIRONMENT_ID",
    "value": "*************",
    "slotSetting": false
  },
  {
    "name": "CKEDITOR_SECRET_KEY",
    "value": "***************",
    "slotSetting": false
  },
  {
    "name": "DATABASE_URL",
    "value": "postgres://*************:#############@**************.postgres.database.azure.com:5432/*******",
    "slotSetting": false
  },
  {
    "name": "DJANGOENV",
    "value": "staging",
    "slotSetting": false
  },
  {
    "name": "DOCKER_REGISTRY_SERVER_PASSWORD",
    "value": "***********",
    "slotSetting": false
  },
  {
    "name": "DOCKER_REGISTRY_SERVER_URL",
    "value": "https://index.docker.io",
    "slotSetting": false
  },
  {
    "name": "DOCKER_REGISTRY_SERVER_USERNAME",
    "value": "*******",
    "slotSetting": false
  },
  {
    "name": "EPI_SERVER_URL",
    "value": "*******************",
    "slotSetting": false
  },
  {
    "name": "FLEXIT_PAY_BAMBORA_ACCESS_TOKEN",
    "value": "*********",
    "slotSetting": false
  },
  {
    "name": "FLEXIT_PAY_BAMBORA_MD5_KEY",
    "value": "*******",
    "slotSetting": false
  },
  {
    "name": "FLEXIT_PAY_BAMBORA_MERCHANT_NUMBER",
    "value": "********",
    "slotSetting": false
  },
  {
    "name": "FLEXIT_PAY_BAMBORA_SECRET_TOKEN",
    "value": "*************",
    "slotSetting": false
  },
  {
    "name": "FLEXITKT_CAMPAIGNS_SUBDOMAIN",
    "value": "campaign-staging",
    "slotSetting": false
  },
  {
    "name": "FLEXITKT_CUSTOMERS_SUBDOMAIN",
    "value": "account-staging",
    "slotSetting": false
  },
  {
    "name": "FLEXITKT_MAIN_SUBDOMAIN",
    "value": "internt-staging",
    "slotSetting": false
  },
  {
    "name": "FLEXITKT_SITE_DOMAIN",
    "value": "*******************",
    "slotSetting": false
  },
  {
    "name": "FLEXITKT_USE_SUBDOMAINS",
    "value": "False",
    "slotSetting": false
  },
  {
    "name": "GOOGLE_API_URL_KEY",
    "value": "**********************",
    "slotSetting": false
  },
  {
    "name": "HERE_API_ACCESS_KEY_ID",
    "value": "******************",
    "slotSetting": false
  },
  {
    "name": "HERE_API_ACCESS_KEY_SECRET",
    "value": "*********************",
    "slotSetting": false
  },
  {
    "name": "HERE_MAPS_API_KEY",
    "value": "*********************",
    "slotSetting": false
  },
  {
    "name": "MICROSOFT_AUTH_CLIENT_ID",
    "value": "*******************",
    "slotSetting": false
  },
  {
    "name": "MICROSOFT_AUTH_CLIENT_SECRET",
    "value": "**********************",
    "slotSetting": false
  },
  {
    "name": "MICROSOFT_AUTH_REDIRECT_URL",
    "value": "*********************",
    "slotSetting": false
  },
  {
    "name": "MICROSOFT_FILE_PICKER_REDIRECT_URI",
    "value": "**********************",
    "slotSetting": false
  },
  {
    "name": "PORT",
    "value": "8000",
    "slotSetting": false
  },
  {
    "name": "PRODUCTS_SITE_URL",
    "value": "*************",
    "slotSetting": false
  },
  {
    "name": "REDIS_URL",
    "value": "***********************",
    "slotSetting": false
  },
  {
    "name": "S3_BUCKET_NAME",
    "value": "******************",
    "slotSetting": false
  },
  {
    "name": "SECRET_KEY",
    "value": "***********************",
    "slotSetting": false
  },
  {
    "name": "SEND_TO_ONLY_ALLOWED_ADDRESSES",
    "value": "True",
    "slotSetting": false
  },
  {
    "name": "SIEMENS_CLOUD_PASSWORD",
    "value": "**********************",
    "slotSetting": false
  },
  {
    "name": "SIEMENS_CLOUD_SUBSCRIPTION_KEY",
    "value": "***********************",
    "slotSetting": false
  },
  {
    "name": "SIEMENS_CLOUD_TENANT_ID",
    "value": "******************************",
    "slotSetting": false
  },
  {
    "name": "SIEMENS_CLOUD_USERNAME",
    "value": "******************************",
    "slotSetting": false
  },
  {
    "name": "WEBSITE_HTTPLOGGING_RETENTION_DAYS",
    "value": "10",
    "slotSetting": false
  },
  {
    "name": "WEBSITES_ENABLE_APP_SERVICE_STORAGE",
    "value": "false",
    "slotSetting": false
  },
  {
    "name": "WEBSITES_PORT",
    "value": "8000",
    "slotSetting": false
  }
]

請檢查您是否在 Azure 應用服務的應用設置中以正確的格式編輯了環境變量。

In a default Linux container or a custom Linux container, any nested JSON key structure in the app setting name like ApplicationInsights:InstrumentationKey needs to be configured in App Service as ApplicationInsights__InstrumentationKey for the key name. 換句話說,任何:都應該替換為__ (雙下划線)。

參考: https://docs.microsoft.com/en-us/azure/app-service/configure-common#add-or-edit

這是為所有尋求上述答案的人准備的。 在微軟支持 session 后問題已解決。

我仍然不明白為什么微軟似乎眾所周知的一個重要問題在他們的文檔或任何教程中都沒有詳細介紹,但我們在這里......

由於 docker 容器基本上包裝在另一個接收您的 env 變量的容器中,因此您必須“手動”,或者,最好將您的環境從外部容器“顯式”復制到內部容器

這是通過在你的 startup.sh 中粘貼下一行來實現的(或者你稱之為啟動腳本的任何東西)

eval $(printenv | sed -n "s/^\([^=]\+\)=\(.*\)$/export \1=\2/p" | sed 's/"/\\\"/g' | sed '/=/s//="/' | sed 's/$/"/' >> /etc/profile)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM