Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

599
Visualizações
Cree un archivo Docker basado en Linux para el proyecto .NET Framework

Tengo un proyecto ASP.Net Framework 4.8. Quiero crear un archivo Docker basado en Linux para este proyecto, pero no puedo encontrar una imagen basada en Linux para usar como imagen base en mi archivo Docker para .NET Framework. ¿Cómo puedo crear un archivo Docker para esto?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

.NET Framework no es multiplataforma. Tampoco lo es ASP.NET en sí mismo. No funcionan en Linux. Por lo tanto, no hay imágenes de contenedores basadas en Linux que le permitan ejecutar .NET Framework o ASP.NET Framework.

Y no se puede hacer uno personalizado; .NET Framework simplemente no se ejecutará en Linux.

Es por eso que Microsoft creó .NET Core (y ahora solo se llama .NET) y ASP.NET Core, por lo que serían multiplataforma y podría usarlos en Linux, incluidas las imágenes de contenedor basadas en Linux.


Como se sugiere en algunos comentarios, es posible que pueda usar mono. Mono es una implementación (no realmente compatible) de .NET Framework que pretende funcionar en Linux. No es 100% compatible con .NET Framework, por lo que su aplicación puede o no funcionar con él.


Una opción mejor, pero más difícil, sería migrar su aplicación a ASP.NET Core 6, que es compatible con contenedores basados en Linux.

over 4 years ago · Santiago Trujillo Relatório

0

Finalmente, después de una semana de intentarlo, pude obtener una respuesta.

Tenemos que basar la imagen en Nginx e instalarle el mono.

  1. Cree una carpeta que contenga lo siguiente:

ingrese la descripción de la imagen aquí

  1. Publique su proyecto ASP en la carpeta dist .

  2. En la carpeta Nginx, cree una carpeta con el nombre de los sites-available .

  3. En la carpeta de sitios disponibles, cree un archivo con el nombre default y los siguientes códigos:

    servidor { escuchar 80; acceso_log /var/log/nginx/mono-fastcgi.log; raíz /var/www/; token_servidor desactivado; more_clear_headers Servidor X-AspNet-Version;

     location / { index index.html index.htm default.aspx Default.aspx; fastcgi_index /; fastcgi_pass unix:/var/run/mono-fastcgi.sock; include /etc/nginx/fastcgi_params; }

    }

  4. En la carpeta Nginx crea un archivo con el nombre fastcgi_params y los siguientes códigos:

 fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REQUEST_SCHEME $scheme; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param PATH_INFO ""; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  1. En la carpeta pools crea un archivo con el nombre sample.webapp y los siguientes códigos:
 <?xml version="1.0" encoding="UTF-8"?> <apps> <web-application> <name>root</name> <vhost>*</vhost> <vport>-1</vport> <vpath>/</vpath> <path>/var/www/sample-app/</path> </web-application> </apps>
  1. archivo supervisord.conf :
 [supervisord] logfile=/var/log/supervisor/supervisord.log logfile_maxbytes = 50MB nodaemon=true user=root [program:mono] command=fastcgi-mono-server4 --appconfigdir=/etc/mono/pools --socket=unix --filename=/var/run/mono-fastcgi.sock --printlog --name=mono user=root stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [program:nginx] command=nginx user=root stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0
  1. Finalmente Dickerfile:
 FROM mono:latest RUN apt-get update \ && apt-get install -y \ iproute2 supervisor ca-certificates-mono fsharp mono-vbnc nuget \ referenceassemblies-pcl mono-fastcgi-server4 nginx nginx-extras \ && rm -rf /var/lib/apt/lists/* /tmp/* \ && echo "daemon off;" | cat - /etc/nginx/nginx.conf > temp && mv temp /etc/nginx/nginx.conf \ && sed -i -e 's/www-data/root/g' /etc/nginx/nginx.conf COPY nginx/ /etc/nginx/ COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf COPY pools /etc/mono/pools COPY dist /var/www/sample-app EXPOSE 80 ENTRYPOINT [ "/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf" ]
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda