当前位置: 首页 > 知识库问答 >
问题:

docker的问题

越勇锐
2023-03-14

以下是我的dockerfile:

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 8080/tcp
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["ProductDirectory.csproj", "."]
RUN dotnet restore "./ProductDirectory.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "ProductDirectory.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "ProductDirectory.csproj" -c Release -o /app/publish
EXPOSE 8080/tcp

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ProductDirectory.dll"]

共有1个答案

夹谷沛
2023-03-14

在DockerFile中使用多个stage是个好主意。但是您应该小心这一点,因为Docker只接收dockerfile的最新部分,在您的情况下,它只接收这一部分:

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ProductDirectory.dll"]

您没有定义应用程序的端口。要解决此问题,只需添加公开端口并为此节指定您的端口,如下所示:

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
EXPOSE 8080
ENTRYPOINT ["dotnet", "ProductDirectory.dll"]

我希望这能帮助你解决你的问题。

 类似资料:
  • 我按照centos6的指导在redhat6.5中启用docker,并创建一个redhat6.5base映像。6.5 imange可以在容器中很好地运行,但当我在映像中启用sshd时,sshd总是在成功登录后立即终止我的ssh客户端。 我将图像保存并加载到我的 ubuntu 14.04.1 泊坞窗中,然后红帽 6.5 sshd 运行良好。所以我认为红帽6.5 sshd图像应该没问题。然后,我保存我的

  • 我在version上。我正在尝试一个图像,但我得到了一个错误。我做了来查看图像的大小,结果是这样 我所在的服务器空间不足,但它有可用空间,但当我运行

  • 我试图通过docker-compose文件部署kafka,或者通过安装kafka映像并手动运行它。当我开始运行kafka服务器(代理)时,这两个步骤都给我带来了错误 INFO初始化客户端连接,connectString=188.226.151.167:2181 sessiontimeout=6000 watcher=org.i0itec.zkclient.zkclient@323b36e0(org

  • 我正在尝试将和连接在一起工作。工作正常,但当我尝试创建新服务器时,有两个问题: 如果容器位于不是5432的其他端口,则不会识别该端口。显示此错误: 如果容器位于端口5432处,则错误为的密码身份验证失败。 我执行以下命令以获取容器:。 在stackoverflow中的其他响应之后,我尝试添加这个命令,并且我也在配置文件中输入,但没有一个对我有用。 希望你能帮助我,谢谢。 好吧,我解决了,这是我的一

  • 系统:win11专业版 wsl2:ubuntu20.04.6 LTS 问题: 第一次安装docker后,创建镜像,创建容器都挺正常,端口映射也正常。 今天就出问题,创建容器时,配置端口映射,正常,但是宿主机访问映射端口没有响应. 假设端口映射18080:8080,我还在容器内部使用 curl http://localhost:8080有响应,使用在内部是正常,但是宿主机浏览器访问http://lo

  • 以下是我的项目结构的一部分: 我有init.sql脚本,它应该创建用户、数据库和表(用户和数据库与docker-compose.yml文件中的相同) 但当我查看docker entrypoint initdb.d文件夹时,它是空的(没有init.sql文件)。我使用以下命令: docker exec最新发布的\u postgres-passport\u 1 ls-l docker入口点initdb