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」を構築し、個人サーバーとして運用する方法を紹介しました。
- docker-compose.ymlの記述ミス(インデントのスペース数)がエラーの主な原因になりやすい
- Nextcloudの初期インストール画面ではSQLite3ではなくMySQLのデータベース設定を選択する必要がある
- docker-compose up -dでコンテナが正常に起動すれば構築は完了
設定ファイルの記述さえ間違えなければ、比較的簡単にNextcloud環境を構築できます。
関連リンク









コメント