【问题标题】:How to access WebAPi after deploying on dockerdocker部署后如何访问WebAPI
【发布时间】:2018-04-14 03:25:01
【问题描述】:

我有我的Dockerfile

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /build
COPY . .
RUN dotnet restore
RUN dotnet publish -c Release -o output

FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY  --from=build /build/output .
ENTRYPOINT ["dotnet","TestDockerApi.dll"]

我正在使用:

docker build -t testdocker/api .

然后使用 :

从镜像运行容器
docker run testdocker/api

我可以在我的控制台上看到以下消息:

托管环境:生产
内容根路径:/app
现在收听:http://[::]:80
申请开始。按 Ctrl+C 关闭。

我正在尝试使用 http://localhost/app/TestDockerApi/Values 访问,但它不起作用。

我是否需要使用 docker 镜像 IP 来访问它。

我可以在 Entrypoint 中看到一些建议这样做的教程:

ENTRYPOINT ["dotnet","TestDockerApi.dll","--server.urls","http://0.0.0.0:5000"]

然后在运行容器时,映射端口:

docker run -p 80:5000 testdocker/api

有什么方法可以在不使用端口转发的情况下访问 API?我只是想把基础知识弄好,我应该做什么以及应该做什么。

【问题讨论】:

  • 我注意到我完全理解您的问题,但是您是否尝试过 docker run testdocker/api -p 80:80?或者您的主机上是否可能已经在 80 上运行某些东西?

标签: docker containers dockerfile


【解决方案1】:

Dockerfile 根本不管理容器外部的网络配置。如果你想让 docker 监听你主机的 80 端口,你需要在运行容器时绑定它。

docker run -80:80 testdocker/api

有关映射和公开端口的更多说明,您可以在此处阅读: - https://www.ctl.io/developers/blog/post/docker-networking-rules/

或者,您可以创建自己的服务组合,在其中指定这些详细信息并在 docker-compose.yml 文件中指定这些信息

api:
  image: testdocker/api
  ports:
    - "80:80"

然后你可以简单地运行

docker-compose up 

更多信息在:

【讨论】:

  • 你是一个救生员!
猜你喜欢
  • 1970-01-01
  • 2021-09-28
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
  • 2020-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多