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

288
Visualizações
¿Cuál es la mejor práctica para implementar mi aplicación en mi VPS usando Docker?

Tengo una aplicación (Python Flask) que quiero implementar usando GitLab CI y Docker en mi VPS.

En mi servidor, quiero tener una versión de producción y una versión provisional de mi aplicación. Ambos requieren una conexión MongoDB.

Mi plan es compilar automáticamente la aplicación en GitLab y enviarla al Docker Registry de GitLab. Si quiero implementar la aplicación para la puesta en escena o la producción, hago un docker pull , docker rm y docker run .

El plan es almacenar la configuración (por ejemplo secret_key ) en .production.env (y .staging.env ) y pasarla a la aplicación usando docker run --env-file ./env.list

Ya tengo MongoDB instalado en mi servidor y ambos entornos de las aplicaciones utilizarán la misma instancia de MongoDB, pero con un nombre de base de datos diferente (configurado en .env ).

¿Es esa la mejor práctica para implementar mi aplicación? Tiene alguna recomendación? ¡Gracias!

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

0

Aquí está mi configuración que funcionó razonablemente bien en diferentes organizaciones y tamaños de proyectos:

Para construir:

  1. Las aplicaciones se encuentran en un repositorio git (GitLab en tu caso). Cada aplicación trae su propio Dockerfile.
  2. Uso Jenkins para construir, por supuesto, puede usar cualquier otra herramienta de CD. Jenkins extrae el repositorio de la aplicación, crea la imagen de la ventana acoplable y la publica en un repositorio Docker privado ( Nexus, en mi caso).

Desplegar:

  1. Tengo un repositorio central independiente de la aplicación que tiene un archivo docker-compose (o posiblemente varios archivos que amplían un archivo central para diferentes entornos). Este archivo contiene todas las definiciones de servicio y hace referencia a las imágenes de la ventana acoplable en mi repositorio de Nexus.
  2. Si estoy usando secretos, los almaceno en una instancia de HashiCorp Vault. Jenkins los extrae y los escribe en un archivo .env . El archivo docker-compose puede hacer referencia a las variables de entorno individuales.
  3. Jenkins extrae el repositorio de docker-compose y, en mi caso, a través de scp, sube los archivos de docker-compose y el archivo .env a mi(s) servidor(es).
  4. Luego activa una docker-compose up (para aplicaciones más pequeñas) o vuelve a implementar una pila de ventana acoplable en un enjambre (para aplicaciones más grandes).
  5. Jenkins elimina todo de los servidores de destino.

Si te gusta, puedes hacer el paso 3 a través de Docker Machine. Siento, sin embargo, que sus beneficios no justifican su uso en mis casos.

over 4 years ago · Santiago Trujillo Relatório

0

Una cosa que puedo recomendar, ya que lo he hecho en producción varias veces, es implementar Docker Swarm con extremos cifrados con TLS. Este enlace habla sobre cómo asegurar el enjambre a través de un certificado. Es un poco de trabajo, pero lo que le permitirá hacer es definir servicios para sus aplicaciones.

Los servicios, una vez en línea, pueden tener múltiples réplicas y cada vez que actualice un servicio (es decir, implemente una nueva imagen), el enjambre se encargará de asegurarse de que uno esté en línea en todo momento.

docker service update <service name> --image <new image name>

Algunos servidores VPS en realidad tienen Kubernetes como servicio (como Digital Ocean). Si lo tienen, es más preferible. Gitlab en realidad tiene una función de desarrollo automático y puede administrar de forma remota su clúster de Kubernetes, pero también puede implementarlo manualmente con kubectl.

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