Я играю с докером в Visual Studio.У меня есть консольное приложение, которое работает в Docker, и я хотел бы связаться с ним.
docker-compose.yml и Dockerfile являются стандартными, сгенерированными VS
docker-compose.yml:
version: '3.4'
services:
publisher:
image: ${DOCKER_REGISTRY-}publisher
build:
context: .
dockerfile: Publisher/Dockerfile
Издатель / Dockerfile:
FROM microsoft/dotnet:2.2-runtime AS base
WORKDIR /app
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY Publisher/Publisher.csproj Publisher/
RUN dotnet restore Publisher/Publisher.csproj
COPY . .
WORKDIR /src/Publisher
RUN dotnet build Publisher.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish Publisher.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Publisher.dll"]
Издатель:
namespace Publisher
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World, I'm a publisher!");
while(true)
{
var line = Console.ReadLine();
if (line == null)
{
break;
}
Console.WriteLine(line.ToUpper());
}
}
}
}
Я хочу записать в приложение издателя стандартный ввод.Запустив docker attach my_publisher
, консоль вообще не принимает мой ввод.После отсоединения от контейнера упомянутый выше ввод печатается на моей консоли.
Я попытался изменить свой docker-compose.yml:
version: '3.4'
services:
publisher:
image: ${DOCKER_REGISTRY-}publisher
build:
context: .
dockerfile: Publisher/Dockerfile
stdin_open: true # HERE
tty: true # AND HERE
Теперь он, кажется, принимает мой ввод (этоне выводится на мою консоль после отсоединения), но я не вижу вывода, поэтому я не уверен.
Итак, что я должен сделать, чтобы иметь возможность вводить ввод в свое приложение, а также читатьвыход