docker-dev/gitea/gitea.md

4.7 KiB

Estructura inicial del proyecto

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 principalmente despliegue y/o configuración del 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 eventulemete 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

Gitea - instalación

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

Usuario logado - setting

Account user - settings

Setting - copiar clave pública

Account user - add key

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

  • git clone git@almalinux9-docker:usrdevel1/repo-2.git

git clone ssh

Otros comandos

  • Ver los logs
docker-compose logs -f