【发布时间】:2018-11-08 13:18:59
【问题描述】:
使用 VIsual Studio 2017 Out-of-the-Box (OOB) docker 支持,我可以使用 F5 按钮在我的 Visual Studio 解决方案中构建和运行我的容器 - 这会成功启动我的网站容器,并且我看到了我的网站!我注意到它正在使用 docker-compose 来执行此操作(成功)。
但是
我想了解如何在没有 Visual Studio 的情况下从命令行运行容器。
首先,我在发布模式 (Visual Studio) 中构建我的图像。这会生成两个新图像(docker 图像显示一个没有名称,一个具有我在 docker-compose.yml 中定义的名称)。 [问题:为什么会创建额外的图像?)
docker-compose.yml:
services:
mssql:
image: microsoft/mssql-server-linux:2017-latest
container_name: sql1
ports:
- 1433:1433
environment:
SA_PASSWORD: "password"
ACCEPT_EULA: "Y"
MSSQL_PID: Developer
st.web:
image: myrepo/stweb:1.0.0.1
build:
context: .
dockerfile: ST.Web/Dockerfile
Dockerfile
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY SupportTicket.sln ./
COPY ST.Web/ST.Web.csproj ST.Web/
COPY ST.AppServicesLib/ST.AppServicesLib.csproj ST.AppServicesLib/
COPY ST.SharedInterfacesLib/ST.SharedInterfacesLib.csproj ST.SharedInterfacesLib/
COPY ST.SharedEntitiesLib/ST.SharedEntitiesLib.csproj ST.SharedEntitiesLib/
COPY ST.SQlServerRepoLib/ST.SQLServerRepoLib.csproj ST.SQlServerRepoLib/
RUN dotnet restore -nowarn:msb3202,nu1503
COPY . .
WORKDIR /src/ST.Web
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "ST.Web.dll"]
现在我想从命令行运行它。
-
docker-compose up(我从命令行,从解决方案目录运行它)。这会启动容器,并说
现在收听:http://[::]:80
但我无法浏览该网站。 URL 在哪里(上面写着 [::]:80 --> 看起来很神秘)?我尝试http://localhost:80 但我得到无法访问此站点 localhost 拒绝连接。
我尝试 docker run -it myrepo/mycontainer:1.0.0.0 --publish 80:80 得到与上面相同的结果无法访问此站点等 p>
我尝试 docker run -it myrepo/stweb:1.0.0.1 -p 80:80 并得到 短开关“-p”未在开关映射中定义。
-
我从解决方案目录尝试 docker build。我的解决方案包含我的 Web 应用项目中的 Dockerfile。该解决方案构建良好并且能够复制文件。但是 docker build 不爽,找不到解决方案文件。我使用,来自解决方案目录:
docker build MyWebAppDirectory
我得到 COPY failed: stat /var/lib/docker/tmp/docker-builder753352966/MyApp.sln: no such file or directory
但是,如果我将 Dockerfile(位于 Web App 项目中的文件复制到解决方案目录,它可以工作!)。 OOB Dockerfile 位于 Web App 目录中。但这不适用于我尝试的任何排列中的命令行。我需要将 DockerFile 移出 Web App Project。但这会破坏 Visual Studio 的构建!
问题:
如何在 Visual Studio 2017 OOB docker 支持下使用 docker-compose up 浏览网站,从命令行? (什么是正确的程序/步骤和网址?)
关于如何从命令外壳运行我的容器(特别是网站容器)有什么想法吗? (我对 docker run 以及 docker-compose 特别感兴趣)
关于“短开关 '-p' 未在开关映射中定义”的任何想法?
特定项目的 Dockerfile 的正确位置是什么?解决方案目录还是项目目录?
为什么在发布模式下构建时会创建额外的未命名映像?我希望只看到一个输出。
非常感谢!
【问题讨论】:
标签: docker asp.net-core visual-studio-2017