https://gitlab-com.gitlab.io/support/toolbox/upgrade-path

 

Upgrade Path

 

gitlab-com.gitlab.io

 

깃랩은 최신버전을 업데이트하는게 아니라서 검색후 순서대로 업데이트 하면 됨

 

 

'Docker' 카테고리의 다른 글

도커로 실행중인 깃랩 자동 백업 스크립트  (0) 2024.11.27
docker-compose.yml 설정  (0) 2024.09.12
#!/bin/bash

# 설정
CONTAINER_NAME="gitlab" # GitLab 컨테이너 이름
BACKUP_DIR="/backup" # 백업위치
RETENTION_DAYS=30 # 보관 기간 (일) , 필요시 사용

# 함수: 로그 출력
log() {
    echo "[$(date)] $1"
}

# 1. 백업 생성
log "백업 생성 중..."
docker exec -t "$CONTAINER_NAME" gitlab-backup create

# 2. 컨테이너에서 최신 백업 파일 찾기
log "최신 백업 파일 검색 중..."
LATEST_BACKUP=$(docker exec -t "$CONTAINER_NAME" ls /var/opt/gitlab/backups | grep '.tar' | tail -n 1 | tr -d '\r' | tr -d '\n')
if [ -z "$LATEST_BACKUP" ]; then
    log "최신 백업 파일을 찾지 못했습니다. 백업 파일이 생성되었는지 확인하세요."
    exit 1
fi

log "최신 백업 파일: $LATEST_BACKUP"

# 3. 최신 백업 파일 복사
log "최신 백업 파일 복사 중..."
docker cp "$CONTAINER_NAME:/var/opt/gitlab/backups/$LATEST_BACKUP" "$BACKUP_DIR"
if [ $? -eq 0 ]; then
    log "백업 파일 복사 완료: $BACKUP_DIR/$LATEST_BACKUP"

    # 4. 컨테이너 내부 백업 파일 삭제
    log "컨테이너 내부 백업 파일 삭제 중..."
    docker exec -t "$CONTAINER_NAME" rm -f "/var/opt/gitlab/backups/$LATEST_BACKUP"
    if [ $? -eq 0 ]; then
        log "컨테이너 내부 백업 파일 삭제 완료: $LATEST_BACKUP"
    else
        log "컨테이너 내부 백업 파일 삭제 실패! 수동으로 확인하세요."
    fi
else
    log "백업 파일 복사 실패! 파일을 삭제하지 않습니다."
    exit 1
fi

# 5. 오래된 백업 파일 삭제
log "$RETENTION_DAYS일 이상 지난 백업 파일 삭제 중..."
find "$BACKUP_DIR" -type f -name '*.tar' -mtime +$RETENTION_DAYS -exec rm -f {} \;
if [ $? -eq 0 ]; then
    log "$RETENTION_DAYS일 이상 지난 백업 파일 삭제 완료."
else
    log "오래된 백업 파일 삭제 실패! 수동으로 확인하세요."
fi

# 6. 완료 메시지 출력
log "자동화 작업 완료."

 

컨테이너 내부의 var/opt/gitlab/backups 경로를 수정할 경우에는 따로 변수로 빼서 사용하면 될 것 같다.

'Docker' 카테고리의 다른 글

깃랩 업데이트  (0) 2024.11.27
docker-compose.yml 설정  (0) 2024.09.12

1. 현재 미니 pc 로 홈 서버를 운영중인데 PHP 도쓰고 node 도 쓰고 하다보니 같은 80포트와 443 포트에 사용하기위해 도커 도입을 결정하였다.

 

 

2. 도커랑 도커컴포즈 설치 (환경 Ubuntu 22.04.2 LTS) 

 

3. 디렉토리는  /home 에 prod 랑 dev 를 구분해두었다

 

4. /home/prod 에 docker-compose.yml 작성 후 

version: '3.8'

x-common-settings: &common-settings
  env_file:
    - ./envs/.env

services:
  php:
    build:
      context: ./php
      dockerfile: Dockerfile
    container_name: php74-fpm_prod
    environment:
      TZ: "Asia/Seoul"
    volumes:
      - ./projects/project_name/www:/var/www/html/project_name
    networks:
      shared_network_prod:
        ipv4_address: 172.xx.x.x
    <<: *common-settings
  composer:
    container_name: composer_prod
    image: composer:latest
    volumes:
      - ./projects/project_name/www:/app
    working_dir: /app
    command: install
    <<: *common-settings
    networks:
      shared_network_prod:
        ipv4_address: 172.xx.x.x
  nginx:
    build:
      context: ./nginx
      dockerfile: Dockerfile
    container_name: nginx_proxy_prod
    image: nginx_proxy_prod
    environment:
      TZ: "Asia/Seoul"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:r - read 만 가능하도록
      - ./projects/project_name/ssl/:/etc/ssl/project_name/
      - ./nginx/log/nginx:/var/log/nginx
      - ./projects/project_name/www:/var/www/html/project_name
      #- ./certbot/conf:/etc/letsencrypt
      #- ./certbot/www:/var/www/certbot
    <<: *common-settings
    networks:
      shared_network_prod:
        ipv4_address: 172.xx.x.x
  db:
    build:
      context: ./postgresql
      dockerfile: Dockerfile
    container_name: postgres_prod
    environment:
      TZ: "Asia/Seoul"
    ports:
      - "5433:5432"
    volumes:
      - ./postgresql/data:/var/lib/postgresql/data
    networks:
      shared_network_prod:
        ipv4_address: 172.xx.x.x

  node-app:
    build:
      context: ./node_study
      dockerfile: Dockerfile
    container_name: node_study_prod
    ports:
      - "6000:3000"
    volumes:
      - ./node_study/node-api-study:/usr/src/app
      - /usr/src/app/node_modules
    networks:
      shared_network_prod:
        ipv4_address: 172.xx.x.x
    command: ["npm", "run", "start"]


networks:
  shared_network_prod:
    external:
      name: nwtwork_name

 

- ports 는 환경에따라 변경하면 되고 

하위 디렉토리는 

이런 구조로 작업했다.

 

 

도커 관리 툴로  portainer 가 사용해보니 좋은거 같던데 나중에 블로그 써서 자세하게 쓰겠다

'Docker' 카테고리의 다른 글

깃랩 업데이트  (0) 2024.11.27
도커로 실행중인 깃랩 자동 백업 스크립트  (0) 2024.11.27

+ Recent posts