밑도 끝도 없는 nocodb 관리 스크립트 기록

나이트 개발자·2023년 3월 31일
0
post-thumbnail

Nocodb를 다시 사용하면서 문제가 발생하여 나중을 위해 기록한다.

docker compose로 띄울 경우 최신 버전이 설치되지 않을 때 로컬에 저장돼 있는 nocodb image를 삭제!

docker image rm nocodb/nocodb

삭제하고 새로 nocodb의 이미지로 컨테이너가 동작하지만 인증 관련된 exception이 지속 발생할 경우 아래 내용들을 참고해서 수정하면 된다. nocodb의 문제라기 보다는 docker의 volume 동작 방식을 감안하여 신경써야할 부분이다.

  • docker의 기본 volume 확인/삭제 :
sudo ls  /var/lib/docker/volumes
docker volume inspect nocodb-pg_db_data  
docker volume rm nocodb-pg_db_data

이 마저도 일어나지 않게 하려면 서비스를 내릴 때 다음의 명령어로 볼륨까지 지우도록 할 필요 있음.

docker compose down -v

보다 관리가 용이하도록 compose yml 원본을 수정하여 관리

  • nocodb 의 기본 docker-compose.yml
version: '2.1'
services:
  nocodb:
    depends_on:
      root_db:
        condition: service_healthy
    environment:
      NC_DB: "pg://root_db:5432?u=postgres&p=password&d=root_db"
    image: "nocodb/nocodb:latest"
    ports:
      - "8080:8080"
    restart: always
    volumes:
      - "nc_data:/usr/app/data"
  root_db:
    environment:
      POSTGRES_DB: root_db
      POSTGRES_PASSWORD: password
      POSTGRES_USER: postgres
    healthcheck:
      interval: 60s
      retries: 10
      test: "pg_isready -U \"$$POSTGRES_USER\" -d \"$$POSTGRES_DB\""
      timeout: 2s
    image: postgres
    restart: always
    volumes:
      - "db_data:/var/lib/postgresql/data"
 volumes:
   db_data: {}
   nc_data: {}
  • 관리를 위해 수정한 docker-compose.yml
version: '2.1'
services:
  nocodb:
    depends_on:
      root_db:
        condition: service_healthy
    environment:
      NC_DB: "pg://root_db:5432?u=postgres&p=password&d=root_db"
    image: "nocodb/nocodb:latest"
    ports:
      - "8080:8080"
    restart: always
    volumes:
      - "./nc_data:/usr/app/data"
  root_db:
    environment:
      POSTGRES_DB: root_db
      POSTGRES_PASSWORD: password
      POSTGRES_USER: postgres
    healthcheck:
      interval: 60s
      retries: 10
      test: "pg_isready -U \"$$POSTGRES_USER\" -d \"$$POSTGRES_DB\""
      timeout: 2s
    image: postgres
    restart: always
    volumes:
      - "./db_data:/var/lib/postgresql/data"
# volumes:
#   db_data: {}
#   nc_data: {}

volume에 작업중인 아이디로 권한 제약없이 접근하기

sudo chown -R $USER:$USER ./nc_data
sudo chmod -R 755 ./nc_data
sudo chown -R $USER:$USER ./db_data
sudo chmod -R 755 ./db_data

위 스크립트를 실행하고 nocodb 재시작

docker compose up 

다음단계

nocodb의 인증과 REST API 서비스를 클라이언트에서 어떻게 접근하는 지 점검하여 준비된 클라이언트 앱에 연동하려 한다.

profile
개발하면서 또는 프러덕 관리하면서 겪는 기억해둬야하는 내용을 메모장 삼아 남긴다. Google Keep이나 메모 도구에 남기는 것과는 달리 잘 정리할 수 있어서 언젠가 들춰봐야할 내용들을 담은 글들이 게시된다.

0개의 댓글