| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
Tags
- io과점유
- c#
- DataTable
- npm
- Resident
- jellyfin
- Gitea GPG
- checkbox
- 트레이아이콘
- Capcom
- gfd
- 시놀로지깃티설치
- Resident Evil
- gitea
- Header
- io사용량
- 젤리핀
- gitea설치
- LogonUI
- Re
- synology
- 시놀로지
- 깃티설치
- theme
- DataGridView
- trayicon
- 깃티gpg
- 깃티
- Column
- ssh
Archives
- Today
- Total
C O D I N G
Gitea - Postgresql 업그레이드 (마이그레이션) 본문
- Gitea를 프로젝트로 생성해서 빌드 했을 경우에 한 함.
기본 구성 (Yaml)
networks:
gitea:
external: false
services:
server:
image: docker.gitea.com/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- /volume1/docker/gitea:/data
ports:
- "3000:3000"
- "22:22"
depends_on:
db:
condition: service_healthy
db:
image: docker.io/library/postgres:17
container_name: gitea-db
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
networks:
- gitea
volumes:
- /volume1/docker/gitea/postgres/data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U gitea -d gitea"]
interval: 5s
timeout: 5s
retries: 20
이런 형태로 구성되어 있을 가능성이 크고 Volume 경로는, 설정에 따라 다를 수 있음
지금 postgresql 버전이 17이고 이거를 특정버전으로(여기에서는 18.4) 올릴 예정
다이렉트로 현재 구성되어 있는 yaml을 수정하여 빌드 하는 경우,
17 -> 18.4로 db가 덮어씌워져 버리기때문에 db의 테이블이 날아가 버린다.
- 진행순서
- gitea 컨테이너 중지
- ssh 접속 → postgresql 17버전 backup sql 생성
- postgresql 18.4 컨테이너 다운로드 및 단독 실행
- ssh → 백업된 sql을 18.4에서 실행
- postgresql 17버전 서비스 중지
- gitea yaml 파일 수정 및 재빌드
- gitea 컨테이너 중지
- Data 추가/수정되지 않도록 gitea 서비스를 종료 한다.
- ssh 접속 → postgresql 17버전 backup sql 생성
- 관리자 계정으로 ssh 접근
- sql을 백업하고자 하는 경로까지 접근 하여 아래 코드 입력
docker exec gitea-db pg_dump -U gitea gitea > gitea_backup.sql- gitea-db는 본인이 지정한 container_name을 입력하면 된다.
- 그럼 본인이 최종 접근했던 경로에 gitea_backup.sql 파일이 생성된것을 알 수 있다. 해당데이터는 17버전에서 구성된 테이블 및 데이터들을 복원 할 수 있는 쿼리가 저장되어 있고 그냥 파일을 오픈해서도 확인 할 수 있다.
- postgresql 18.4 컨테이너 다운로드 및 단독 실행
- gitea 프로젝트에서 gitea-db컨테이너를 중지
- 18.4를 생성하기 위한 프로젝트 yaml을 작성한다.
-
services:db:image: docker.io/library/postgres:18.4container_name: gitea-db-v18restart: alwaysenvironment:- POSTGRES_USER=gitea- POSTGRES_PASSWORD=gitea- POSTGRES_DB=giteavolumes:- /volume1/docker/gitea/postgres:/var/lib/postgresql - 위와 같이 구성한다. container_name은 17버전에서 사용한 이름과 다르게 지정되어야 한다.
- environment값 역시 17버전과 동일하게 설정해야, 마이그레이션 이후에 정상동작한다.
- volumes의 경우 postgresql/data에서 /data를 제거 해주어야 한다. (실경로가 postgres로 이전버전과 똑같으나. 18버전부터 해당폴더내에 하위폴더 추가되니 위와같이 설정하면 된다.
- 저장 후 빌드
- ssh → 백업된 sql을 18.4에서 실행
- 18.4에서 생성한 테이블이 정상인지 확인한다.
-
실행 docker exec -it gitea-db-v18 psql -U gitea -d gitea 결과 psql (18.4 (Debian 18.4-1.pgdg13+1)) Type "help" for help. 실행 gitea=# \dt 결과 Did not find any tables. - 위와 같은 결과가 나오면 정상이다. db는 18.4 버전이고. 테이블을 조회했을때 아무것도 없다. (db를 방금생성)
- 위에서 백업해둔 sql파일을 18.4버전의 db에 restore한다.
-
cat /volume1/docker/gitea/gitea_backup.sql | docker exec -i gitea-db-v18 psql -U gitea -d gitea - cat이후의 경로는 본인이 저장한 sql 파일의 경로를 지정하면 된다.
- 마이그레이션이 완료되었다면, 다시 \dt 를 이용하여 테이블을 조회하면 정상적으로 조회됨을 알 수 있다.
- postgresql 17버전 서비스 중지 (이제 삭제해도 무방하나 최종 확인 후 삭제하는게 좋음)
- gitea yaml 파일 수정 및 재빌드
networks:
gitea:
external: false
services:
server:
image: docker.gitea.com/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- /volume1/docker/gitea:/data
ports:
- "3000:3000"
- "22:22"
depends_on:
db:
condition: service_healthy
db:
image: docker.io/library/postgres:18.4
container_name: gitea-db-v18
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
networks:
- gitea
volumes:
- /volume1/docker/gitea/postgres:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U gitea -d gitea"]
interval: 5s
timeout: 5s
retries: 20
- 저장 및 재빌드
마이너 버전을 자동업그레이드를 허용한다고하면
image: docker.io/library/postgres:18.4를 image: docker.io/library/postgres:18 로 바꾸면 된다.
- 요약
- 사용하던 DB sql 파일로 백업 (테이블 및 데이터)
- 신규 DB 생성
- 신규 DB에 백업된 데이터로 복원
- Gitea서비스에서 신규 DB로 연결
- 사용하던 DB서비스 제거
'Synology > Gitea' 카테고리의 다른 글
| Gitea - GPG (0) | 2025.12.10 |
|---|---|
| Gitea 설치 - 2 (0) | 2025.12.10 |
| Gitea - SSH 설정 (0) | 2025.12.10 |
| Gitea 설치 - 1 (0) | 2025.12.10 |