使用VIsual Studio 2017开箱即用(OOB)泊坞窗支持,我可以使用F5按钮在我的Visual Studio解决方案中构建和运行我的容器 - 这会成功激活我的网站容器,并且我看到了我的网站!我注意到它正在使用docker-compose来执行此操作(SUCCESS)。
BUT
我想了解如何在没有Visual Studio的情况下从命令行运行容器。
首先,我在发布模式(Visual Studio)中构建我的图像。这会生成两个新图像(docker图像显示一个没有名称,一个名称我在docker-compose.yml中定义)。 [问题:为什么要创建额外的图像?)
搬运工-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(我从命令行运行,来自Solution Directory)。这会启动容器,并说
现在聆听:http://[::]:80
但我无法浏览网站。 URL在哪里(它说[::]:80 - >看起来很神秘)?我尝试http://localhost:80但是我得到无法访问此网站 localhost拒绝连接。
我尝试使用docker run -it myrepo / mycontainer:1.0.0.0 --publish 80:80并获得与上面相同的内容此网站无法访问等。
我尝试使用docker run -it myrepo / stweb:1.0.0.1 -p 80:80并获得短切换' -p'未在交换机映射中定义。
我在解决方案目录中尝试使用docker build。我的解决方案包含我的Web App项目中的Dockerfile。该解决方案构建良好,并能够复制文件。但是docker build很不开心,无法找到解决方案文件。我在解决方案目录中使用:
docker build MyWebAppDirectory
我 COPY失败:stat /var/lib/docker/tmp/docker-builder753352966/MyApp.sln:没有这样的文件或目录
但是,如果我将Dockerfile(位于Web App项目中)复制到Solution Dir,它可以工作!)。 OOB Dockerfile位于Web App目录中。但是,在我尝试的任何排列中,这都不能与命令行一起使用。我需要将DockerFile移出Web App Project。但这打破了Visual Studio的构建!
问题:
如何使用Visual Studio 2017 OOB泊坞窗支持从命令行使用 docker-compose up 浏览网站? (正确的程序/步骤和URL是什么?)
关于如何运行我的容器(特别是网站容器)的任何想法形成命令shell? (我对 docker run 以及 docker-compose 特别感兴趣)
关于"短切换' -p'的任何想法未在交换机映射中定义。"?
特定项目的Dockerfile的正确位置是什么? SolutionDir或项目目录?
为什么我在发布模式下构建时会创建一个额外的未命名图像?我希望只看到一个输出。
非常感谢!
答案 0 :(得分:6)
# Build
docker-compose build
# Run
docker-compose up
现在浏览浏览器中的localhost:{port}
。 (您应该能够找到{port}
文件中配置的docker-compose.override.yml
。
构建容器:
docker build -f path/to/Dockerfile . -t virasana/stweb
docker build
的语法是docker build <context>
。由于上下文是解决方案目录,因此必须从那里运行docker build
命令。 -f
标志用于指定要使用的Dockerfile。
我更喜欢将Dockerfile
保留在逻辑上属于的项目中。如果您需要在同一解决方案中安装多个容器,这也是您唯一的选择。
您现在可以使用以下命令运行容器:
docker run -it --rm -p "5500:80" virasana/stweb
浏览到localhost:5500
以查看该网站。
为什么我在发布模式下构建时会创建一个额外的未命名图像?我希望只看到一个输出。
您有两张图片:mssql
&amp; st.web
。
st.web
遗漏了container_name
。