Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

202
Views
El contenedor Docker no se iniciará

Creé una aplicación simple que se conecta a PostgreSQL, pero cuando la contuve usando Docker, parece que no puedo iniciarla y no se mostró ningún puerto cuando ejecuté el contenedor. ¿Cuál parece ser el problema?

La aplicación funciona sin Docker, pero cuando la contenedorizo, ahí es donde surge el problema.

docker build es exitosa y cuando uso la docker run

me da un contenedor pero cuando lo verifico usando docker ps -a no se muestran puertos

Esto es lo que hice en la terminal docker

y este es mi código cuando me conecto a PostgreSQL db

 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(); } }

aquí está mi archivo 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"]

Editar: cambié mi archivo Docker a esto y de alguna manera puedo obtener el puerto ahora

 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"]

Pero no puedo ejecutarlo. Aquí está la captura de pantalla

ingrese la descripción de la imagen aquí

Cualquier ayuda sería muy apreciada. ¡Gracias! PD: soy novato

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

  1. Si usa Docker para Mac (o Docker para Windows), para acceder a cualquier cosa en el host, debe usar host.docker.internal . Más sobre eso aquí .
  2. Lea la cadena de conexión de las variables de configuración y entorno. Eso le permitirá anularlo cuando ejecute el contenedor.

PD: soy novato

Consejo profesional para ti :p

Es posible que no desee usar -d en el contenedor en el que está trabajando, por lo que verá sus registros allí mismo. Si no lo hubiera usado, habría visto la salida del proceso y no se habría preguntado por qué no se muestra ningún puerto allí :)


ACTUALIZAR:

  1. Use el Dockerfile de la pregunta original (antes de la edición).
  2. Le sugerí que lo ejecutara sin -d :
     docker run -p 8080:80 --name test webapp1
    Esto le mostrará el bloqueo de la aplicación aspnet. Verás lo que está pasando. En este caso, como sé lo que está pasando, puedo ayudar, pero en general quieres saber qué está pasando. Lo hace al no ejecutarlo en un estado separado para cosas pequeñas como esta, y al usar los docker logs cuando hay mucho que analizar. De todas formas...
  3. ... desea que el contenedor acceda a la base de datos en el host, no en su host local. Lo hace utilizando host.docker.internal como host. P.ej:
     Host=host.docker.internal;Username=postgres;Password=password;Database=user
    Esto solo funciona si usa Docker para Windows o Docker para Mac. No funciona en Docker Toolbox o en Linux AFAIK.
  4. Ahora necesita encontrar una forma en que su aplicación use host.docker.internal cuando se ejecuta dentro de docker y localhost de lo contrario. Mi sugerencia fue leerlo desde config.
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!