# Esempio di docker-compose.yml ```yaml services: gitea-db: container_name: gitea-db image: mcr.microsoft.com/mssql/server:2019-latest environment: SA_PASSWORD: System128! ACCEPT_EULA: Y MSSQL_MEMORY_LIMIT_MB: 2048 TZ: Europe/Rome volumes: - gitea-db-vol:/var/opt/mssql networks: - gitea-net restart: unless-stopped ports: - 41433:1433 gitea: image: docker.gitea.com/gitea:1.23.5 container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=mssql - GITEA__database__HOST=gitea-db - GITEA__database__NAME=Gitea - GITEA__database__USER=sa - GITEA__database__PASSWD=System128! restart: always networks: - gitea-net volumes: - gitea-data-vol:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - 3000:3000 - 3022:22 depends_on: - gitea-db volumes: gitea-db-vol: name: gitea-db-vol gitea-data-vol: name: gitea-data-vol networks: gitea-net: name: gitea-net ``` # Backup Gitea hostato su Docker 1. Creare una cartella temporanea `tmp` all'interno del volume docker `gitea-data-vol` ```bash cd /var/lib/docker/volumes/gitea-data-vol/_data/ mkdir tmp chmod 777 tmp ``` 2. Lanciare il comando `dump` all'interno del container `gitea` ```bash docker exec -u git -it -w /data/tmp gitea bash -c '/usr/local/bin/gitea dump -c /data/gitea/conf/app.ini' ``` Questo produrrà un file di backup `gitea-dump-xxxxxxxxxx.zip` nella cartella `tmp` appena creata (`/data/tmp` del container, ovvero `/var/lib/docker/volumes/gitea-data-vol/_data/tmp` del host). **Spostare questo file su un server sicuro.** Sarà necessario anche un backup del database Gitea. # Restore Gitea hostato su Docker Questa procedura serve a ripristinare la configurazione e le repository Gitea partendo da un backup nel formato `gitea-dump-xxxxxxxxxx.zip` Si prende per scontato che vi sia già in esecuzione uno stack simile a quello prodotto dal [docker-compose.yml](#docker-compose) 1. Creare una cartella temporanea `tmp` all'interno del volume docker `gitea-data-vol` e spostarvi il file `gitea-dump-xxxxxxxxxx.zip` ```bash cd /var/lib/docker/volumes/gitea-data-vol/_data/ mkdir tmp mv /path/to/gitea-dump-xxxxxxxxxx.zip tmp/ chmod 777 -R tmp ``` 2. Aprire la console all'interno del container Gitea ```bash docker exec --user git -it gitea bash ``` 3. Scompattare l'archivio `gitea-dump-xxxxxxxxxx.zip` ```bash cd /data/tmp unzip gitea-dump-xxxxxxxxxx.zip -d dump ``` 4. Sovrascrivere i file dell'installazione provvisoria con quelli del backup ```bash #mv dump/data/* /data/gitea/ cp -r dump/data/* /data/gitea/ #mv dump/repos/* /data/git/repositories/ cp -r dump/repos/* /data/git/repositories/ chown -R git:git /data /usr/local/bin/gitea -c '/data/gitea/conf/app.ini' admin regenerate hooks ``` 5. Impostare l'utente `git` come proprietario della cartella `/data` ```bash chown -R git:git /data ``` 6. (facoltativo) Ripristinare gli Hook ```bash /usr/local/bin/gitea -c '/data/gitea/conf/app.ini' admin regenerate hooks ``` > **NOTA:** se aprendo una repository dalla GUI di Gitea si ottiene l'errore
> `The Git data underlying this repository cannot be read. Contact the administrator of this instance or delete this repository.`
> è possibile che le repository nella cartella `/data/git/repositories/`, ovvero `/var/lib/docker/volumes/gitea-data-vol/_data/git/repositories/`, siano nella posizione sbagliata, ad esempio al di fuori della cartella dell'organizzazione.
>> **ESEMPIO 1**
>> Organizzazione: Logika
>> Repository: ModalitaAssistenza
>> Percorso: /data/git/repositories/Logika/ModalitaAssistenza.git > >> **ESEMPIO 2**
>> Utente: alberto.morettin
>> Repository: TempRepo
>> Percorso: /data/git/repositories/alberto.morettin/TempRepo.git