28 votes

ASPNETCORE_ENVIRONMENT dans le Panneau

j'ai des problèmes de réglage de l' ASPNETCORE_ENVIRONMENT variable de l'exécution de mon projet dans un conteneur docker. Le problème est que la valeur est toujours ensemble/écrasé de "Développement".

J'ai essayé le réglage de la variable d'environnement dans mon Dockerfile à l'aide de

ENV ASPNETCORE_ENVIRONMENT test

aussi essayé le réglage de la variable d'environnement dans mon menu fixe-composition de fichier à l'aide de

environment:
      - ASPNETCORE_ENVIRONMENT=test

Lorsque j'ai mis toute autre variable d'environnement , il travaille, par exemple:

environment:
      - OTHER_TEST_VARIABLE=test

Je suppose que la valeur de ASPNETCORE_ENVIRONMENT variable est écrasé quelque part, mais j'ai du mal à trouver où.

J'ai ajouté le Panneau de support à un projet existant et suis en cours d'exécution du projet directement via Visual Studio Docker/Docker composer option

Le projet s'exécute sur l'Asp Net de Base 2.1

Merci d'avance

Mon launchSettings.json:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:53183/",
      "sslPort": 0
    }
  },
  "profiles": {

    "Docker": {
      "commandName": "Docker",
      "launchBrowser": true,
      "launchUrl": "{Scheme}://localhost:{ServicePort}/api/values"

    }

  }
}

J'ai aussi essayé d'ajouter la variable d'environnement de configuration de la launchSettings.json

"Docker": {
          "commandName": "Docker",
          "launchBrowser": true,
          "launchUrl": "{Scheme}://localhost:{ServicePort}/api/values",
          "environmentVariables": {
           "ASPNETCORE_ENVIRONMENT": "test"
      }
        }

Mon Hébergeur:

 public static IWebHost BuildWebHost(string[] args)
        {
           return WebHost.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((builderContext,config) =>
                {
                    config.AddEnvironmentVariables();
                })
                .ConfigureLogging((hostingContext, logging) =>
                {
                    logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
                    logging.AddConsole();
                    logging.AddDebug();
                })
                .UseStartup<Startup>()
                .Build();

        }

Mon menu fixe-composer.yml

version: '3.4'

services:
  api:
    image: ${DOCKER_REGISTRY}api
    build:
      context: .
      dockerfile: API/Dockerfile
    environment:
     - ASPNETCORE_ENVIRONMENT=test 

Mon Dockerfile:

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base

WORKDIR /app
EXPOSE 80
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY API/API.csproj API/
RUN dotnet restore API/API.csproj
COPY . .
WORKDIR /src/API
RUN dotnet build API.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish API.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .


ENTRYPOINT ["dotnet", "API.dll"]

Voici une liste des variables d'environnement dans le conteneur

C:\Users\Administrator>docker exec -ti d6 /bin/bash
root@d6f26d2ed2c3:/app# printenv
HOSTNAME=d6f26d2ed2c3
ASPNETCORE_URLS=http://+:80
test1=asdasd
test2=dasdasd
test3=dasdasd
PWD=/app
HOME=/root
NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages
DOTNET_USE_POLLING_FILE_WATCHER=1
ASPNETCORE_VERSION=2.1.3
DOTNET_RUNNING_IN_CONTAINER=true
TERM=xterm
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ASPNETCORE_ENVIRONMENT=Development
_=/usr/bin/printenv
root@d6f26d2ed2c3:/app#

29voto

Tao Zhou Points 2866

Il fonctionne pour moi en configurant ASPNETCORE_ENVIRONMENT avec la commande dotnet CoreDocker.dll --environment="X"

Essayez de changer de dockerfile comme ci-dessous:

ENTRYPOINT ["dotnet", "CoreDocker.dll", "--environment=X"]

20voto

Hani Amr Points 241

Dans le menu fixe-composer.override.fichier yml, vous devriez trouver quelque chose comme ça:

version: '3.4'

services:
  webapplication1:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development # <==

7voto

Bruno Zell Points 1466

Visual Studio Docker Outillage

Dans le cas où vous utilisez le Panneau de l'intégration de Visual Studio (debug contenant de l'intérieur VS), vous devez prêter une attention particulière aux valeurs par défaut.

Par Défaut Les Variables D'Environnement

Lorsque l'outillage est de démarrer le débogueur avec un docker run [..] de commande, il fournit une -e "ASPNETCORE_ENVIRONMENT=Development" argument. Vous pouvez remplacer cette variable d'environnement dans l' Properties/launchSettings.json.

Même si je ne le vois pas dans la commande, lors de mes tests j'ai connu un autre défaut de la variable ASPNETCORE_URLS=http://+:80 ainsi.

Un bon point de départ pour lu sur VS Panneau d'Outillage est à ce blog et à la documentation officielle.

.Net-Core 3.0 Hôte Générique

Lorsque vous utilisez le générique de l'hôte .Net-Core 3.0, vous risquez de rencontrer des problèmes lorsque vous utilisez le nouveau générique DOTNET_ENVIRONMENT variable, puisque vous aurez deux environnements spécifiés, alors. Cela peut être difficile à déboguer. Donc, ce que j'aime à faire est de désactiver tous les paramètres par défaut au départ et de nouveau départ dans ma Properties/launchSettings.json:

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "Docker": {
      "commandName": "Docker",
      "environmentVariables": {
        // Overwrite default VS Docker Tools environment variables first (ASPNETCORE_ENVIRONMENT=Development; ASPNETCORE_URLS=http://+:80)
        // https://www.paraesthesia.com/archive/2019/06/18/tips-on-container-tools-for-visual-studio/
        "ASPNETCORE_ENVIRONMENT": "",
        "ASPNETCORE_URLS": "",
        "DOTNET_ENVIRONMENT": "Production",
        "DOTNET_URLS": "http://+:80"
      }
    }
  }
}

1voto

Aaron Points 271

Merci pour vos commentaires, j'ai résolu mon problème. C'était juste mon erreur.

Mon problème est que quand j'ai ajouté le Panneau de Soutien à mon projet, j'ai déjà eu un Dockerfile inclus dans le projet.

Quand VS fichiers générés pour le Panneau de soutien, il y avait une deuxième Dockerfile créé, et l'un des Dockerfiles a été renommé "le Dockerfile.d'origine".

J'ai été en utilisant le "Dockerfile" visible dans l'explorateur de solutions (qui a été en quelque sorte mappé à la "Dockerfile.d'origine" fichier dans le système de fichiers)

Il semble que dans le fond de mes changements où écrite pour "Dockerfile.original" mais ce fichier n'a pas été utilisé pendant docker-composer a été en cours d'exécution. Il a utilisé le vide généré Dockerfile qui n'était pas visible dans l'explorateur de solutions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X