macOSのDockerで「Nextcloud+mysql」を運用する方法

📖 この記事は約 9 分で読めます。
概要

macOSのDockerで「Nextcloud+mysql」を個人サーバーで運用する方法と、docker-compose.yml作成時によくある記述ミス・エラーの対処法を紹介します。

管理人

本記事の読者層は以下の方を想定しています。

本記事の読者層
  • macOSユーザーがDockerを利用してNextcloudを利用したい方
  • docker-composeの設定ファイルでエラーが発生し、原因が分からず困っている方
目次

NextcloudをmacのDocker上で構築する方法

過去の記事で仮想環境プラットフォーム「Docker」をmacOSで使用できるDocker Desktop for macのインストール方法を紹介しました。今回は、NextcloudをDockerでインストールする方法を紹介します。

なお、Dockerは今回のようなNextcloudなどの個人サーバー用途だけでなく、コードと依存関係をひとまとめにパッケージ化できる標準化された仕組みとして、機械学習・AI分野でも広く使われています。PyTorchやTensorFlowといった深層学習フレームワークやGPU向けのドライバーを含む複雑な環境を、開発者のPC上とクラウド・サーバー上とで同じように動かせる点が、AI開発でDockerが選ばれる理由です。Docker社自身も、Docker Composeを使ってAIエージェントやローカルLLM環境を構築できる機能を提供しており、Dockerは今やAI関連の開発基盤としても標準的な選択肢の一つになっています。

Nextcloudの利用方法に関しては以下の記事をご参照下さい。

MacOS上で利用する仮想環境プラットフォーム「Docker Desktop for mac」インストール方法の紹介は、以下の記事をご参照下さい。

本記事では、Dockerを利用して「Nextcloud」をmac上で構築する方法を示します。

  • Nextcloud
バージョン 34.0.2(2026年7月時点の最新版。最新バージョンは公式サイトでご確認ください)
  • mySQL
バージョン 8.0以上(Nextcloud 21以降はMySQL 5.7がサポート対象外のため、8.0以上を使用してください)

mySQLとnextcloudのイメージのダウンロード

以下のDockerの公式イメージからmysqlとnextcloudのイメージをダウンロードします。

macOSのターミナル上から以下のdocker pullコマンドを実行して、Dockerのイメージをダウンロードできます。

docker pull mysql:8.0
docker pull nextcloud

次に、docker-compose用の定義ファイルを作成します。

version: '2'
volumes:
 mysql:
 app:

services:
 mysql:
  restart: always
  hostname: mysql_db
  image: mysql:8.0
  platform: linux/arm64/v8
  container_name: mysql-container
  command:
   --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1
  ports:
   - 3306:3306
  volumes:
   - mysql:/var/lib/mysql
  environment:
   - MYSQL_ROOT_PASSWORD=rootpass
   - MYSQL_PASSWORD=pass
   - MYSQL_DATABASE=nextcloud
   - MYSQL_USER=nextcloud
   - TZ=Asia/Tokyo

 app:
  restart: always
  hostname: nextcloud_app
  container_name: nextcloud-app
  image: nextcloud
  volumes:
   - app:/var/www/html
  ports:
   - 12345:80
  links:
   - mysql

設定ファイルを記載したら、

% docker-compose up -d

を実行してみてください。エラーが出なければそのまま起動します。

注意点

コマンドで気をつけるポイントは、各コマンドの前にいくつ空白スペースを入れるかです。数を間違えるとエラーになります。スペースの数は偶数2, 4, 6にするのが最も安全です。

ポイント

空白のスペースを間違えたり、入力の文字を間違えたり、コマンドを間違えると以下のようなエラーが出てきます

  • services.mysql.environment must be a mapping(空白の入れ間違い)
  • services.mysql.environment.# must be a string(入力の英数字・英文字の間違い)
  • yaml: line #: mapping values are not allowed in this context(コマンド間違い)

大体は、ymlファイルのタイプ時に発生するスペースのエラーが多いと思います。

services.mysql Additional property (volume名) is not allowed

といったvolumeID名(上の例では「app」など)の設定ファイル内の記述間違い等でもエラーが発生します。

最終的に、以下のようにコマンドを入力後に起動できればコンテナUP完了です。

% docker-compose up -d
[+] Running 3/3
 ⠿ Volume "nextcloud_app"  Created                                                                                              0.0s
 ⠿ Container nextcloud-app      Started                                                                                              0.3s
 ⠿ Container mysql-container    Started

その後、適当なSafariなどのブラウザ上のURLへ「http://localhost:12345」を入力すると以下のようにNextcloudが起動します。

注意:ここでこのままインストールボタンを押してしまうとSQLite3のデータベース仕様でインストールが始まってしまいます。

画面真ん中に「ストレージとデータベース」と書かれた欄があります。

こちらをクリックしてMySQLのデータベース設定を入力しインストールします。

ポイント

ここでは以下のように設定されているため、入力も同様に行います

  • MYSQL_ROOT_PASSWORD = rootpass
  • MYSQL_PASSWORD = pass
  • MYSQL_DATABASE = nextcloud
  • MYSQL_USER = nextcloud

まとめ

MacOSのDockerでNextcloud+MySQLを運用するポイント

本記事では、macOSのDocker環境で「Nextcloud+mysql」を構築し、個人サーバーとして運用する方法を紹介しました。

  • docker-compose.ymlの記述ミス(インデントのスペース数)がエラーの主な原因になりやすい
  • Nextcloudの初期インストール画面ではSQLite3ではなくMySQLのデータベース設定を選択する必要がある
  • docker-compose up -dでコンテナが正常に起動すれば構築は完了

設定ファイルの記述さえ間違えなければ、比較的簡単にNextcloud環境を構築できます。

関連リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次