概要
OSSのオンラインストレージサービス「Nextcloud」をDockerで構築してどのように使えるのか確認してみます
$ docker -v
Docker version 18.09.2, build 6247962
$ docker-compose -v
docker-compose version 1.23.2, build 1110ad01
Nextcloud立ち上げ
まずNextcloudのコンテナを立ち上げて、ブラウザからアクセスをしてみます
イメージはOfficial Imageが用意されているのでこちらを使います
https://hub.docker.com/_/nextcloud
また、Apacheとfpmのイメージがありますが、今回は起動してすぐに使えるApacheのイメージを使います
version: '2'
services:
web:
image: nextcloud:16.0.5-apache
ports:
- "8080:80"
docker-compose.ymlを作成し、コンテナを起動します
$ docker-compose build
$ docker-compose up -d
これでNextcloudが立ち上がったので、ブラウザでアクセスしてみます
初回アクセス時には管理者アカウントの作成とDBの初期設定を行う画面が表示されるので、
一旦DBはこのままで管理者アカウントを入力してセットアップを完了します
セットアップ完了後、作成した管理者でログインした状態でトップページが表示されます
デフォルトでサンプルファイルがいくつか用意されています
PDFファイルを選択すると、内蔵されたビュワーで表示されます
テキストファイルを選択すると、エディターが表示されてそのまま編集することができます
その他にもNextcloudにはアプリというものが用意されており、
プラグインのような形で機能の追加や画面のカスタマイズを行うことができます
DBとの連携
NextcloudではDBにSQLite, MySQL, MariaDB, PostgreSQLを使用することができ、
先ほどは別途環境を用意しなくても良いSQLiteでセットアップを行いましたが、
本番環境でも使用できるようにPostgreSQLのコンテナを立ち上げて接続を行います
まず先ほどのコンテナを一度落としておきます
$ docker-compose down
docker-compose.ymlを以下のように変更します
version: '2'
services:
web:
image: nextcloud:16.0.5-apache
volumes:
- webdata:/var/www/html
ports:
- "8080:80"
db:
image: postgres:11.5-alpine
ports:
- "5432:5432"
volumes:
- dbdata:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=secret
volumes:
webdata:
dbdata:
コンテナを落としてもデータを永続化できるようにデータボリュームを追加しています
この状態で再度コンテナの立ち上げを行います
$ docker-compose up -d
コンテナが起動したらブラウザでアクセスします
先ほどと同じように管理者アカウントを入力し、ストレージとデータベースをクリックして以下のように入力します
- データベース:PostgreSQL
- ユーザー名:postgres
- パスワード:secret
- データベース名:nextcloud
- ホスト名:db:5432
※データベース名はここで入力したものをセットアップ時に自動作成してくれるため、
事前に作成しておく必要はありません
セットアップが完了すると先ほどと同じようにトップページが表示されます
DBのコンテナに入って見てみるとテーブルなどが作成されていることが確認できます
bash-5.0# psql -U postgres nextcloud
psql (11.5)
Type "help" for help.
nextcloud=# \d
List of relations
Schema | Name | Type | Owner
--------+--------------------------------------+----------+----------
public | oc_accounts | table | oc_admin
public | oc_activity | table | oc_admin
public | oc_activity_activity_id_seq | sequence | oc_admin
public | oc_activity_mq | table | oc_admin
public | oc_activity_mq_mail_id_seq | sequence | oc_admin
public | oc_addressbookchanges | table | oc_admin
public | oc_addressbookchanges_id_seq | sequence | oc_admin
public | oc_addressbooks | table | oc_admin
public | oc_addressbooks_id_seq | sequence | oc_admin
public | oc_appconfig | table | oc_admin
public | oc_authtoken | table | oc_admin
public | oc_authtoken_id_seq | sequence | oc_admin
public | oc_bruteforce_attempts | table | oc_admin
public | oc_bruteforce_attempts_id_seq | sequence | oc_admin
public | oc_calendar_invitations | table | oc_admin
public | oc_calendar_invitations_id_seq | sequence | oc_admin
public | oc_calendar_resources | table | oc_admin
public | oc_calendar_resources_id_seq | sequence | oc_admin
public | oc_calendar_rooms | table | oc_admin
public | oc_calendar_rooms_id_seq | sequence | oc_admin
public | oc_calendarchanges | table | oc_admin
public | oc_calendarchanges_id_seq | sequence | oc_admin
public | oc_calendarobjects | table | oc_admin
public | oc_calendarobjects_id_seq | sequence | oc_admin
public | oc_calendarobjects_props | table | oc_admin
public | oc_calendarobjects_props_id_seq | sequence | oc_admin
public | oc_calendars | table | oc_admin
public | oc_calendars_id_seq | sequence | oc_admin
public | oc_calendarsubscriptions | table | oc_admin
public | oc_calendarsubscriptions_id_seq | sequence | oc_admin
public | oc_cards | table | oc_admin
public | oc_cards_id_seq | sequence | oc_admin
public | oc_cards_properties | table | oc_admin
public | oc_cards_properties_id_seq | sequence | oc_admin
public | oc_collres_accesscache | table | oc_admin
public | oc_collres_collections | table | oc_admin
public | oc_collres_collections_id_seq | sequence | oc_admin
public | oc_collres_resources | table | oc_admin
public | oc_comments | table | oc_admin
public | oc_comments_id_seq | sequence | oc_admin
public | oc_comments_read_markers | table | oc_admin
public | oc_credentials | table | oc_admin
public | oc_dav_shares | table | oc_admin
public | oc_dav_shares_id_seq | sequence | oc_admin
public | oc_directlink | table | oc_admin
public | oc_directlink_id_seq | sequence | oc_admin
public | oc_federated_reshares | table | oc_admin
public | oc_file_locks | table | oc_admin
--More--