Как запустить контейнер VIsual Studio Docker из командной строки?Работает в VS, но не в командной строке - PullRequest
0 голосов
/ 29 мая 2018

Используя поддержку док-станции VIsual Studio 2017 Out-of-the-Box (OOB), я могу собрать и запустить свой контейнер в своем решении Visual Studio с помощью кнопки F5 - это успешно запускает контейнер моего веб-сайта, иЯ вижу свой сайт!Я заметил, что для этого используется docker-compose (УСПЕХ).

НО

Я хочу понять, как запустить контейнер из командной строки, без Visual Studio.

Сначала я строю свои изображения в режиме выпуска (Visual Studio).Это приводит к созданию ДВУХ новых изображений (на изображениях докера показано одно без имени, а другое с именем, которое я определил в 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"]

Теперь я хочу запустить его из командной строки.

  1. docker-compose (я запускаю это из командной строки, из каталога решений).Это запускает контейнер и говорит:

    Сейчас слушаю: http://[::]:80

Но я не могу зайти на сайт.Где находится URL (там написано [::]: 80 -> выглядит загадочно)?Я пытаюсь http://localhost:80, но я получаю Этот сайт не может быть достигнут localhost отказался подключиться.

Я пытаюсь запустить Docker -it myrepo / mycontainer: 1.0.0.0 - Опубликовать 80:80, и я получаю то же, что и выше Этот сайт не может быть достигнут и т. Д.

Я пытаюсь запустить docker -it myrepo / stweb: 1.0.0.1 -p 80:80 и получаю Короткий ключ '-p' не определен в сопоставлениях ключей.

Я пытаюсь собрать докер из каталога решений.Мое решение содержит Dockerfile в моем проекте Web App.Решение прекрасно работает и умеет копировать файлы.Но сборка докера несчастна и не может найти файл решения.Я использую из каталога решений:

сборка докера MyWebAppDirectory

Я получаю Сбой КОПИРОВАНИЯ: stat / var / lib / docker / tmp / docker-builder753352966/MyApp.sln: нет такого файла или каталога

Но если я скопирую Dockerfile (который находится в проекте Web App в Solution Dir, он работает!).Dockerfile OOB находится в каталоге веб-приложения.Но это не работает с командной строкой ни в одной из перестановок, которые я пробовал.Мне нужно было удалить DockerFile из проекта веб-приложения.Но это нарушает сборку Visual Studio!

ВОПРОСЫ:

  1. Как перейти на веб-сайт с помощью docker-compose up с поддержкой докера Visual Studio 2017 OOB, из командной строки ?(Каковы / являются правильными процедура / шаги и URL?)

  2. Есть какие-нибудь идеи о том, как запустить мой контейнер (ы) (в частности, контейнер веб-сайта) из командной оболочки?(Меня особенно интересует docker run , а также docker-compose )

  3. Любые идеи по поводу "Короткого переключателя" -p'не определено в сопоставлениях переключателей. "?

  4. Каково правильное расположение файла Docker для конкретного проекта?SolutionDir или dir проекта?

  5. Почему при создании в режиме выпуска создается дополнительное безымянное изображение?Я ожидаю увидеть только один вывод.

Большое спасибо!

1 Ответ

0 голосов
/ 30 мая 2018

Запуск приложения из командной строки

# Build
docker-compose build
# Run
docker-compose up

Теперь перейдите к localhost:{port} в вашем браузере.(Вы должны быть в состоянии найти {port}, настроенный в файле docker-compose.override.yml.)

Запуск веб-контейнера

  1. Сборка контейнера:

    docker build -f path/to/Dockerfile . -t virasana/stweb
    

    Синтаксис для docker build: docker build <context>.Поскольку контекст является каталогом решений, оттуда должна быть выполнена команда docker build.Флаг -f используется для указания используемого Dockerfile.

    Я предпочитаю сохранять Dockerfile в проекте, которому он логически принадлежит.Это также ваш единственный выбор, если вам нужно иметь несколько контейнеров в одном решении.

  2. Теперь вы можете запустить контейнер, используя:

    docker run -it --rm -p "5500:80" virasana/stweb
    

    Просмотр в localhost:5500 для просмотра сайта.


Почему при создании в режиме выпуска создается дополнительное безымянное изображение?Я ожидаю увидеть только один вывод.

У вас есть два изображения: mssql & st.web.
st.web отсутствует container_name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...