NocoDBは、オープンソースのノーコードデータベースです。データベースをGUIで管理できるツールで、以下のような機能があります。NocoDBをDocker Composeで構築する方法を紹介します。
必要な環境
NocoDBをDocker Composeで構築するには以下の環境が必要です。
- Docker
- Docker Compose
実装手順
NocoDBはDocker Composeを使えば簡単に構築できます。
- フォルダの作成
NocoDBを構築するためのフォルダを作成します。
コマンド実行
mkdir nocodb
cd nocodb
- docker-compose.ymlの作成
NocoDBを構築するためのdocker-compose.ymlを作成します。
docker-compose.yml
version: '3.8'
services:
nocodb:
image: "nocodb/nocodb:latest"
environment:
NC_DB: "pg://root_db:5432?u=postgres&p=password&d=root_db"
volumes:
- "./nocodb:/usr/app/data"
depends_on:
root_db:
condition: service_healthy
ports:
- "8080:8080"
restart: always
root_db:
image: postgres
environment:
POSTGRES_DB: root_db
POSTGRES_PASSWORD: password
POSTGRES_USER: postgres
healthcheck:
interval: 10s
retries: 10
test: "pg_isready -U \"$$POSTGRES_USER\" -d \"$$POSTGRES_DB\""
timeout: 2s
restart: always
volumes:
- "./postgres:/var/lib/postgresql/data"
上記のdocker-compose.ymlは次のような設定を記述しています。
services.nocodbimage: NocoDBのイメージを指定します。- 今回はDocker hubから最新のイメージを取得するために
nocodb/nocodb:latestを指定しています。
- 今回はDocker hubから最新のイメージを取得するために
environment: NocoDBの環境変数を指定します。NC_DBはNocoDBのデータベースの接続情報を指定します。pg://root_db:5432?u=postgres&p=password&d=root_dbpg: データベースの種類を指定します。root_db: データベース名を指定します。5432: データベースのポート番号を指定します。postgres: データベースのユーザー名を指定します。password: データベースのパスワードを指定します。root_db: データベース名を指定します。
volumes: NocoDBのデータを保存するためのディレクトリを指定します。- 今回はホストOS上のカレントディレクトリにある
nocodbディレクトリをコンテナ内の/usr/app/dataにマウントしています。 - このディレクトリにNocoDBのデータが保存されます。
- このディレクトリをマウントしないと、コンテナを削除するとデータが消えてしまいます。
- 今回はホストOS上のカレントディレクトリにある
depends_on: NocoDBのコンテナが起動する前にPostgreSQLのコンテナが起動するように指定します。ports: NocoDBのポートを指定します。- 今回はホストOSの8080ポートをコンテナの8080ポートにマッピングしています。
- この設定により、ホストOSの8080ポートにアクセスするとNocoDBの画面が表示されます。
restart: NocoDBのコンテナが停止した場合に自動的に再起動するように指定します。
services.root_dbimage: PostgreSQLのイメージを指定します。- 今回はDocker hubから最新のイメージを取得するために
postgresを指定しています。 - このイメージはPostgreSQLのデータベースを構築するために利用します。
- 今回はDocker hubから最新のイメージを取得するために
environment: PostgreSQLの環境変数を指定します。POSTGRES_DB: データベース名を指定します。POSTGRES_PASSWORD: データベースのパスワードを指定します。POSTGRES_USER: データベースのユーザー名を指定します。
healthcheck: PostgreSQLのコンテナが起動したかどうかを確認するための設定を指定します。interval: コンテナの起動確認を行う間隔を指定します。retries: コンテナの起動確認を行う回数を指定します。test: コンテナの起動確認を行うコマンドを指定します。timeout: コンテナの起動確認を行うタイムアウト時間を指定します。
restart: PostgreSQLのコンテナが停止した場合に自動的に再起動するように指定します。volumes: PostgreSQLのデータを保存するためのディレクトリを指定します。- 今回はホストOS上のカレントディレクトリにある
postgresディレクトリをコンテナ内の/var/lib/postgresql/dataにマウントしています。 - このディレクトリにPostgreSQLのデータが保存されます。
- このディレクトリをマウントしないと、コンテナを削除するとデータが消えてしまいます。
- 今回はホストOS上のカレントディレクトリにある
- NocoDBの起動
NocoDBを起動します。
コマンド実行
docker-compose up -d
- NocoDBの起動確認
NocoDBが起動しているか確認します。
コマンド実行
docker-compose ps
数のようにnocodb_nocodb_1とnocodb_root_db_1のStatusがUpになっていることを確認します。
実行結果
Name Command State Ports
-----------------------------------------------------------------------------------
nocodb_nocodb_1 docker-entrypoint.sh npm s ... Up
nocodb_root_db_1 docker-entrypoint.sh postgres Up 5432/tcp, 5433/tcp
これでNoCodeDBの構築が完了しました。
NocoDBの初期設定
NocoDBの初期設定を行います。ブラウザでhttp://localhost:8080にアクセスするとNocoDBの画面が表示されます。管理者のユーザー名とパスワードを任意に入力して「Sign Up」をクリックします。

次のように初期状態で登録されているデータベースが表示されます。

このとおり、Docker Composeを使うことにより、簡単にNocoDBを構築できました。
