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 서비스를 클라이언트에서 어떻게 접근하는 지 점검하여 준비된 클라이언트 앱에 연동하려 한다.