我创建了一个连接到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();
}
}
这是我的Docker文件。
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:我是新手。
localhost
= 这个容器,而不是物理机器。 - ProgrammingLlamadocker logs $container_id
查看日志。 - BMitch