# Estructura inicial del proyecto ```bash gitea $ tree -a . ├── docker-compose.override.yml ├── docker-compose.yml └── .env ``` _Nota autor:_ algunos de los datos quizas son ofuscados/ocultos en este reporte. Este documento es solo a modo de referencia para despliegue de esta aplicación docker aquí compartida. ## Definicion de los contenedores Docker En este despliegue se utiliza junto a la definición del `docker-compose.yml`, el fichero `.env` y `docker-compose.override.yml` para que se permita el despliegue de la misma aplicación en diferentes entornos (ejemplo: entorno desarrollo, pruebas, producción, etc). ## Archivo .env Variables de entorno referenciadas en los archivos YAML. Archivo: .env ```bash VAR=VALUE ... ``` ## Archivo docker-compose.yml Archivo principal para definir los servicios de tu aplicación. Archivo: docker-compose.yml ```yaml --- ## version: '3.9' networks: my_net: external: false services: my_service: image: ${GITEA_IMAGE} container_name: ${CONTAINER_NAME} restart: always networks: - my_net volumes: - ${TIMEZONE_FILE}:${TIMEZONE_FILE_CONTAINER} - ${LOCALTIME_FILE}:${LOCALTIME_FILE_CONTAINER} ports: - "${GITEA_HTTP_EXPOSE}:${GITEA_HTTP_CONTAINER}" depends_on: - my_db my_db: image: ${RDBMS_IMAGE} restart: always networks: - my_net ``` ## Archivo docker-compose.override.yml Útil para ajustar configuraciones según el entorno (desarrollo, prueba, producción). Archivo: docker-compose.override.yml ```yaml --- ## version: '3.9' services: my_service: environment: - USER_UID=${GITEA_UID} - USER_GID=${GITEA_GID} - GITEA__database__DB_TYPE=${RDBMS} - GITEA__database__HOST=my_db:${RDBMS_PORT} - GITEA__database__NAME=${DB_NAME} - GITEA__database__USER=${DB_USER} - GITEA__database__PASSWD=${DB_PASSWD} volumes: - ${GITEA_PATH_HOST}:${GITEA_PATH_CONTAINER} - .../.ssh/:${GITEA_SSH_PATH_CONTAINER} ports: - "${GITEA_SSH_EXPOSE}:${GITEA_SSH_CONTAINER}" - "${GITEA_IP_SSH_EXPOSE}:${GITEA_SSH_CONTAINER}" my_db: environment: - POSTGRES_USER=${DB_USER} - POSTGRES_PASSWORD=${DB_PASSWD} - POSTGRES_DB=${DB_NAME} volumes: - ${POSTGRES_VOL_PATH_HOST}:${POSTGRES_PATH_CONTAINER} ``` # Ejecución y configuración ## Configuración autenticación ssh - Docker Shell (with authorized_keys) _Referencia principal:_ [Installation with Docker](https://docs.gitea.com/installation/install-with-docker#docker-shell-with-authorized_keys) - Docker Shell (with authorized_keys). ### Configuración usario para el contenedor Gitea En el host motor de Docker se realizan las siguientes tareas de configuración. Estas son: ``` source .env export CONTAINER_NAME GITEA_ACCOUNT GITEA_UID GITEA_GID sudo groupadd -g ${GITEA_UID} ${GITEA_ACCOUNT} sudo useradd -u ${GITEA_UID} -g ${GITEA_GID} -G docker -d /home/${GITEA_ACCOUNT} ${GITEA_ACCOUNT} #sudo usermod -G docker -a ${GITEA_ACCOUNT} sudo -u ${GITEA_ACCOUNT} ssh-keygen -t rsa -b 4096 -C "Gitea Host Key" sudo -u ${GITEA_ACCOUNT} cat /home/${GITEA_ACCOUNT}/.ssh/id_rsa.pub | sudo -u ${GITEA_ACCOUNT} tee -a /home/${GITEA_ACCOUNT}/.ssh/authorized_keys sudo -u ${GITEA_ACCOUNT} chmod 600 /home/${GITEA_ACCOUNT}/.ssh/authorized_keys cat <` e instalar Gitea ![Gitea - instalación](images/gitea-install.png) ## Registrar usuario y copiar credenciales En esta sección se registra un usuario y se copia su clave pública. ### Registrar usuario ![Gitea - registrar usuario](images/gitea-register-account.png) ### Usuario logado - setting ![Account user - settings](images/gitea-account-settings.png) #### Setting - copiar clave pública ![Account user - add key](images/gitea-add-key.png) ### Utilización de Gitea En las siguientes capturas se muestran ejemplo como copiar/clonar dos repositorios que el usuario `userdevel1`. Uno mediante el URL sobre `http` y el otro mediante `ssh`. - `git clone http://almalinux9-docker:3000/usrdevel1/repositorio1.git` ![git clone http](images/git-gitea-clone-w-http.png) - `git clone git@almalinux9-docker:usrdevel1/repo-2.git` ![git clone ssh](images/git-gitea-clone-w-ssh.png) ## Otros comandos - Ver los logs ```bash docker-compose logs -f ``` ## Resumen: explicación de la configuración - .env - Centraliza las credenciales y configuraciones sensibles. - `docker-compose.yml` - Define los servicios principales, como Postgres y Gitea (Nginx), con configuraciones básicas, en contenedores separados. - `docker-compose.override.yml` - Extiende o reemplaza configuraciones para propósitos específicos, como desarrollo o debug. - Volúmenes - La base de datos de Postgres en ubica en `...data/postgres`. - El servicio o aplicación Gitea se persiste en `...data/gitea`. - También se utilizan otros volumenes, como el de las credenciales.