4.6 KiB
gitea.md
Ficheros definición de la aplicación
gitea $ tree -a
.
├── docker-compose.override.yml
├── docker-compose.yml
└── .env
Nota autor: Este documento es solo a modo de referencia para principalmente desplegar y/o configurar el entorno para desplegar 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 eventualmente pueda ser utilizado en el despliegue en diferentes entornos (ejemplo: entorno desarrollo, pruebas, producción, etc), o utilizando sobre carga de la propia inicialización de la aplicación.
Responsabilidad de los archivos
.env: variables de entorno referenciadas en los archivos YAML.docker-compose.yml: archivo principal para definir los servicios de la aplicación. En este caso de uso, 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, etc.
Volúmenes que define/utiliza esta aplicación
- La base de datos de Postgres se persiste en
.../postgres(según inicialización en el.env). - El servicio o aplicación Gitea se persiste en
.../gitea(según inicialización en el.env). - También se utilizan otros volumenes, como el de las credenciales para la autenticación por
ssh, este también es persistido en un volumen desde el host anfitrión (host motor de Docker).
Ejecución y configuración
Configuración autenticación ssh - Docker Shell (with authorized_keys)
Referencia principal: Installation with Docker - 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 <<EOF | sudo tee /home/${GITEA_ACCOUNT}/docker-shell
#!/bin/sh
/usr/bin/docker exec -i -u ${GITEA_ACCOUNT} --env SSH_ORIGINAL_COMMAND="\$SSH_ORIGINAL_COMMAND" ${CONTAINER_NAME} sh "\$@"
EOF
sudo chmod +x /home/${GITEA_ACCOUNT}/docker-shell
sudo usermod -s /home/${GITEA_ACCOUNT}/docker-shell ${GITEA_ACCOUNT}
# id ${GITEA_ACCOUNT} # <-- el usuario git sobre el host anfitrion debe poder ejecutar docker para esta configuración funcione (es el usuario que redirecciona la conexión ssh al propio contenedor de Gitea).
##$ id ${GITEA_ACCOUNT}
## uid=...(git) gid=...(git) groups=...(git),...(docker)
Revisar/ajustar estructura
mkdir -pv data/{gitea,postgres}
Estructura actual (sugerida)
gitea]$ tree -a
.
├── data # Carpeta para los volúmenes persistentes
│ ├── gitea
│ └── postgres
├── docker-compose.override.yml
├── docker-compose.yml
├── .env
└── gitea.md
Iniciar los contenedores
docker compose up -d
Instalar Gitea
Acceder a: http://localhost:<$GITEA_HTTP_PORT_EXTERNAL> e instalar Gitea
Registrar usuario y copiar credenciales
En esta sección se registra un usuario y se copia su clave pública.
Registrar usuario
Usuario logado - setting
Setting - copiar clave pública
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 git@almalinux9-docker:usrdevel1/repo-2.git
Otros comandos
- Ver los logs
docker-compose logs -f





