【问题标题】:Why -p is not working when i use it with docker run?当我将它与 docker run 一起使用时,为什么 -p 不起作用?
【发布时间】:2022-01-12 22:37:20
【问题描述】:

这是我第一次使用 Docker 并尝试运行映像,但我需要它在端口 4242 上工作,但是当我编写命令 sudo docker run -it --rm -p 4242:5001 docker-project:v1 以及访问 https://localhost:4242/weatherforecast 时我的启动器什么都没有,它一直在端口 5001 上工作,我希望它在端口 4242 上工作。

如果可以的话,有我的 docker 文件

FROM mcr.microsoft.com/dotnet/aspnet:3.1-focal AS base
WORKDIR /app
EXPOSE 5000
ENV ASPNETCORE_URLS=http://+:5001
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser
FROM mcr.microsoft.com/dotnet/sdk:3.1-focal AS build
WORKDIR /src
COPY ["dockerProject.csproj", "./"]
RUN dotnet restore "dockerProject.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "dockerProject.csproj" -c Release -o /app/buil
FROM build AS publish
RUN dotnet publish "dockerProject.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "dockerProject.dll"]

【问题讨论】:

  • 在您的 dockerfile 中,您使用的是EXPOSE 5000。根据您的问题,我了解您想公开端口 5001

标签: docker dockerfile docker-run


【解决方案1】:

您将 ASPNETCORE_URLS 设置为 http://+:5001,这意味着您的应用将使用 http。所以当你去 https://localhost:4242/weatherforecast 时,它不会工作,因为通信没有加密。

改用 http://localhost:4242/weatherforecast。

【讨论】:

  • 我按照你说的做了,但它一直告诉我“本地主机不允许连接。”
  • 在启动容器时输出的日志中,你能检查它是否说它正在侦听端口 5001?
  • 是的,它说它正在监听端口 5000,即使我的代码中没有 5000
  • @Elies 很奇怪,我不明白为什么。但是尝试将您的 docker run 参数更改为-p 4242:5000,然后转到localhost:4242
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2014-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
相关资源
最近更新 更多