[英]Docker container won't start
创建了一个连接到PostgreSQL的简单应用程序,但是当我使用Docker对其进行容器化时,我似乎无法启动它,并且在运行容器时未显示任何端口。 似乎是什么问题?
该应用程序在没有Docker的情况下可以工作,但是当我对其进行容器化时,就会出现问题。
docker build
成功,当我使用docker run
它给了我一个容器,但是当我使用docker ps -a
检查它时,没有端口显示
这就是我在Docker终端上所做的
这是我连接到PostgreSQL数据库时的代码
class Program
{
static void Main(string[] args)
{
using (var connection = new NpgsqlConnection("Host=localhost;Username=postgres;Password=password;Database=user"))
{
connection.Open();
connection.Execute("Insert into customer (name) values ('Mikolasola');");
var value = connection.Query<string>("Select name from customer;");
Console.WriteLine(value.First());
}
Console.Read();
}
}
这是我的码头工人文件
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "webapplication1.dll"]
编辑:将我的Docker文件更改为此,现在我可以通过某种方式获取端口
FROM microsoft/dotnet:2-sdk AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -r linux-x64 -o out
FROM microsoft/dotnet:2-runtime-deps
WORKDIR /app
COPY --from=build-env /app/out ./
ENTRYPOINT ["./webapplication1"]
但是我不能运行它。 这是屏幕截图
任何帮助将非常感激。 谢谢! PS:我是新手
host.docker.internal
。 在这里更多。 PS:我是新手
专业提示给您:p
您可能不想在正在使用的容器上使用-d
,因此您会在此处看到它的日志。 如果您不使用它,您将看到进程退出并且不知道为什么那里没有显示端口:)
更新:
-d
情况下运行它: docker run -p 8080:80 --name test webapp1
这将向您显示aspnet应用程序崩溃。 您会看到发生了什么事。 在这种情况下,由于我知道发生了什么事,我可以提供帮助,但总的来说,您想知道发生了什么事。 您可以通过以下方式来做到这一点:在诸如此类的小事中,不要以分离状态运行它,并在需要解析的地方使用docker logs
。 无论如何... host.docker.internal
作为主机来host.docker.internal
此操作。 例如: Host=host.docker.internal;Username=postgres;Password=password;Database=user
仅当您使用Windows的Docker或Mac的Docker时,此方法才有效。 在Docker Toolbox或Linux AFAIK上不起作用。 host.docker.internal
和localhost
运行时,应用程序使用host.docker.internal
方式。 我的建议是从配置中读取它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.