Proyecto para desplegar las aplicaciones a producción en un servidor usando Docker, con Traefik se configura el reverse proxy para el redireccionamiento a los contenedores usando los dominios y el Let's encrypt configurado para cada uno, por ejemplo el contenedor que tiene el codigo ubicor-api tiene el dominio api.ubicor.alvarezcristian.com
configurado en el docker-compose.yaml
.
Ubicor es un proyecto para presentar y ubicar los bloques y salones de las universidades en el mapa, para mas información puede consultar ubicor-api y ubicor-frontend.
Para la persistencia de datos, se usa la imagen de docker postgres:14-alpine
Para el proxy reverse encargado del routing, lets encrypt, middleware, etc. se usa Traefik
Se realizan backups a las bases de datos y a los archivos estaticos de los proyectos que corren bajo este repositorio, por ejemplo, la base de datos de ubicor-api y las imagenes de los bloques universitarios. Estos archivos son comprimidos y enviados a un bucket en aws s3. Para este proceso usamos la imagen docker del proyecto en github automate-backups-to-s3, el cual podemos encontrar en docker hub aquí
A continuación se enumeran los pasos para realizar el despliegue de los proyectos usando este repositorio
Algunas imagenes de docker requiren variables de entorno, para esto hay que crear un .env correspondiente a cada servicio. Dentro de la carpeta .env-services.example
veremos los .env de ejemplo para crear las versiones de producción, esto se puede hacer a mano pero lo indicado es utilizar el script creado para esto, este script se encarga de generar las contraseñas y demas secretos que se alojan en los .env.
make generate-env
Para iniciar los contenedores se utiliza docker compose, para esto corremos el siguiente comando:
make start
En caso de que los pasos anteriores se estén realizando para hacer pruebas locales será necesario modificar el archivo de hosts en el computador para el correcto funcionamiento de los dominios configurados en el docker-compose.yaml
.
Dependiendo del sistema operativo este archivo tiene distinta ubicación:
- windows
C:\Windows\System32\drivers\etc\hosts
- linux y mac
/etc/hosts
La edición de este archivo consiste en agregar estas dos lineas al final
127.0.0.1 ubicor.alvarezcristian.com
127.0.0.1 api.ubicor.alvarezcristian.com
Nota: a medida que se agreguen nuevos proyectos tambien será necesario agregar mas dominios al archivo hosts
Cuando se lance una nueva versión de algunas de las imagenes que tenemos en el docker-compose.yaml
podemos ejecutar el siguiente comando para hacer un despliegue a las ultimas versiónes
make update