Traduje para usted
un artículo de Julius Minmo sobre la configuración de la implementación continua para su proyecto. La automatización ahorra mucho tiempo y esfuerzo. El artículo será útil principalmente para programadores novatos.
El despliegue continuo es una gran cosa. Una vez que comprometemos el proyecto y luego todo sucede en modo automático, monitorear este proceso es simplemente fascinante. En este artículo, le mostraré cómo puede configurar todo para un proyecto doméstico.
Le recordamos: para todos los lectores de "Habr": un descuento de 10.000 rublos al registrarse en cualquier curso de Skillbox con el código de promoción "Habr".
Skillbox recomienda: El curso en línea de Frontend Developer Profession .
Entonces, para empezar, veamos el diagrama que explica la diferencia entre la entrega continua y la implementación continua.

En el caso de un proyecto doméstico, elegimos la implementación continua, ya que nadie excepto usted trabaja con él (el proyecto) y nadie depende de él. Bueno, dado que en la mayoría de los casos desea que los cambios se implementen de inmediato, la elección es obvia. Si luego desea cambiar el proceso, siempre puede hacerlo.
Aprenderás lo siguiente:
- Cómo hacer un dockerfile.
- Cómo subir un proyecto a GitHub.
- Cómo construir automáticamente una imagen de Docker en un Docker Hub.
- Cómo descargar y ejecutar automáticamente una imagen desde Watchtower.
Lo que se requiere:
- Una comprensión básica de lo que son Docker y Dockerfile.
- Instalado Git.
- Cuenta en <a href='https://hub.docker.com/"> Docker Hub
Servidor (físico o virtual) que ejecuta Docker.
Aquí están mis
repositorios GitHub y
Docker Hub con los que estoy trabajando.
¿Por qué estoy usando Docker?
Permite utilizar el mismo entorno para diferentes procesos, lo que elimina la aparición de
heisenbags y el problema "solo funciona en mi máquina". Los contenedores están aislados, lo cual es bueno desde el punto de vista de la ciberseguridad. Hay más ventajas, pero, en mi opinión, estas dos son las principales.
Configurar DockerfilePrimero necesitamos un Dockerfile para el proyecto. Este archivo siempre se llama así y no tiene extensión. Siempre está en el directorio principal del proyecto.
Comienza con la declaración FROM, que le dice a Docker de qué imagen base estamos comenzando. Puedes dibujar una analogía con la pintura. Podemos imaginar esta imagen como un lienzo terminado con un fondo pintado y el elemento principal que falta en la composición (su programa).
A continuación, copie los archivos del proyecto al contenedor con el comando COPIAR ...
Le permite recoger archivos desde la ubicación inicial a la actual, por supuesto, dentro del contenedor.
A continuación, debe instalar las dependencias, para esto utilizo Python PIP. Lo principal para recordar es ejecutar comandos en un contenedor con RUN.
Desde python: 3.7
COPIAR ..
EJECUTAR pip install -r require.txtEs simple, ¿verdad? Ahora puede ejecutar el programa en el contenedor.
CMD ["python", "./my_script.py"]Ahora eso es todo, ha terminado con el Dockerfile y puede crear manualmente la imagen y el contenedor. Ahora solo omita este momento.
Ahora creemos un repositorio en GitHub, pero recuerde que no es necesario tocar la línea "Inicializar este repositorio con un archivo README".

Ahora copie la URL.

Abra cmd / shell del directorio raíz del proyecto. Ahora necesita inicializar el repositorio, agregar archivos, configurar el modo remoto, confirmar archivos y enviar el proyecto a GitHub.
git init git add * git remote add origin https://github.com/<user>/<repository>.git git commit -a -m "Make Dockerfile ready for CD" git push -u origin master
Si todo está bien, el repositorio de GitHub se verá así:

¡Estamos a medio camino del éxito!
Ahora necesita conectar GitHub al Docker Hub. Para hacer esto, vaya a la configuración de su cuenta.

Desplácese hacia abajo y conéctese.

Ahora cree el repositorio en Docker Hub.

Asigne un nombre a su repositorio y haga clic en el icono de GitHub o Bitbucket. Luego seleccionamos la organización (generalmente su apodo) y el nombre del proyecto. Si lo desea, la configuración se puede cambiar.

Bueno, ahora el último paso: aquí necesitamos Watchtower en la máquina de destino. Este es un programa que le permite automatizar el proceso. Si aparece una actualización, Watchtower elimina el contenedor original y crea un contenedor a partir de una nueva imagen con la misma configuración.
La buena noticia es que puede instalar Watchtower con Docker, para esto debe ingresar el siguiente comando en el terminal:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower
¡Y ahora lanzamos el contenedor para nuestro proyecto!
docker run -d --name <my-project> <username>/<my-project>
-d permite que el programa funcione en segundo plano, por lo que no se cerrará si cierra el terminal.
Para concluir, si envía una confirmación al repositorio de GitHub, Docker Hub creará automáticamente una imagen de Docker. Entonces Watchtower interactuará con él.
En cuanto a las pruebas, puede usar Travis CI. Puede leer
sobre esto aquí , pero la conclusión es que agrega otro archivo a su repositorio que contiene instrucciones para un servidor externo para realizar pruebas unitarias o cualquier otra instrucción.
Skillbox recomienda: