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的人必须努力工作。