Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker compose build始终将环境值设置为端口80_Docker_Asp.net Core_Asp.net Web Api_Docker Compose_Dockerfile - Fatal编程技术网

Docker compose build始终将环境值设置为端口80

Docker compose build始终将环境值设置为端口80,docker,asp.net-core,asp.net-web-api,docker-compose,dockerfile,Docker,Asp.net Core,Asp.net Web Api,Docker Compose,Dockerfile,我有以下文件:- FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base WORKDIR /app FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build WORKDIR /src COPY ["src/CustomerManagement/CustomerAPI/CustomerAPI.csproj", "src/CustomerManagement/CustomerAPI/"] COPY

我有以下文件:-

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /src
COPY ["src/CustomerManagement/CustomerAPI/CustomerAPI.csproj", "src/CustomerManagement/CustomerAPI/"]

COPY . .
WORKDIR "/src/src/CustomerManagement/CustomerAPI"
RUN dotnet build "CustomerAPI.csproj" -c Release -o /app
RUN dotnet restore -s https://api.nuget.org/v3/index.json -s https://www.myget.org/F/autoweb/api/v3/index.json

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

EXPOSE 5000/tcp
ENV ASPNETCORE_URLS=http://*:5000
HEALTHCHECK --interval=30s --timeout=3s --retries=1 CMD curl --silent --fail http://localhost:5000/hc || exit 1


FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "CustomerAPI.dll"]
Docker.compose文件:-

 customerapi:
    image: ${DOCKER_REGISTRY-}customerapi
    networks:
      - backendpool
    build:
      context: .
      dockerfile: src/CustomerManagement/CustomerAPI/Dockerfile
    depends_on:
      - sqlserver
      - rabbitmq
    ports:
      - "5000"
    environment:
      - ASPNETCORE_ENVIRONMENT=Production   
问题描述:-

我已指示dockerfile公开端口5000。当我尝试构建compose文件时,它的构建很好,但它从未公开端口5000。当我检查docker配置时,它总是设置为端口80:-

docker容器映像配置:-直通docker inspect cli

"DockerVersion": "19.03.1",                                                               
 "Author": "",                                                                             
 "Config": {                                                                               
     "Hostname": "",                                                                       
     "Domainname": "",                                                                     
     "User": "",                                                                           
     "AttachStdin": false,                                                                 
     "AttachStdout": false,                                                                
     "AttachStderr": false,                                                                
     "Tty": false,                                                                         
     "OpenStdin": false,                                                                   
     "StdinOnce": false,                                                                   
     "Env": [                                                                              
         "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",              
         "ASPNETCORE_URLS=http://+:80",                                                    
         "DOTNET_RUNNING_IN_CONTAINER=true",                                               
         "ASPNETCORE_VERSION=2.2.6"                                                        
     ],                                                                                    
     "Cmd": null,                                                                          
     "Image": "sha256:1632908f5f238edcea0e99468a1584b859d6593bcd7e2a8943233c8d2bd4b983",   
     "Volumes": null,                                                                      
     "WorkingDir": "/app",                                                                 
     "Entrypoint": [                                                                       
         "dotnet",                                                                         
         "CustomerAPI.dll"                                                                         
     ],                                                                                    
     "OnBuild": null,                                                                      
     "Labels": null                                                                        
 },                 
无论您在ENV键值对中设置了什么值,它都不会以这种方式设置,我很难理解如何告诉docker compose文件将ENV值设置为docker文件中的公开端口

启动settings.json文件:-

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:5000",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "index.html",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "CustomerAPI": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "index.html",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:5000"
    }
  }
}
docker-compose.local.yml

version: '3.5'

services:

  customerapi:
    ports:
      - "5000:5000"
构建我的docker图像容器

docker-compose -f docker-compose.yml -f docker-compose.local.yml build

在进程完成多级操作后公开端口

FROM base AS final  

WORKDIR /app  

COPY --from=publish /app .  

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

EXPOSE 5000/tcp

正确的顺序是这样的

FROM base AS final  

WORKDIR /app  

COPY --from=publish /app .  

EXPOSE 5000/tcp    

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

端口:-5000:5000已在docker-compose.local.yml版本中设置:“3.5”服务:customerapi:ports:-5000:5000docker-compose-f docker-compose-f docker-compose.local.yml Build我只能在配置中看到端口5000我已粘贴启动设置。你能检查一下吗!!我认为最终的WORKDIR/app COPY-FROM=publish/app应该是这样的。EXPOSE 5000/tcp入口点[dotnet,CustomerAPI.dll]谢谢老兄,它可以工作,而且非常痛苦,它的优先顺序如何?正如我检查过的,dockerfile配置设置中的一些在…之后有端口EXPOSE。。。。因此,我认为它不会有任何排序问题,因为compose文件与它的依赖项是一样的。我认为docker的人必须努力工作。