Linux UbuntuのDockerで「Nextcloud+mysql」を個人サーバーで運用する方法を紹介します。更に、Dockerコンテナの永続化についても解説します。
NextcloudをUbuntuのDocker上で構築する方法
過去の記事で仮想環境プラットフォーム「Docker」をLinux Ubuntuにインストール方法を紹介しました。今回は、NextcloudをDockerでインストールする方法を紹介致しました。
Nextcloudの利用方法に関しては以下の記事をご参照下さい。
MacOS上で利用する仮想環境プラットフォーム「Docker Desktop for mac」 インストール方法の紹介は、以下の記事をご参照下さい。
本記事では、Dockerを利用して「Nextcloud」をmac上で構築する方法を示します。
- Docker (Ubuntu 18.04 LTS)
バージョン 20.10.21 - Nextcloud
バージョン 25.0.1 (Nov. 3, 2022) - mySQL
バージョン 5.7
mySQLとnextcloudのイメージのダウンロード
以下のDockerの公式イメージからmysqlとnextcloudのイメージをダウンロードします。
Ubuntuのターミナル上から以下のdocker pullコマンドを実行して、Dockerのイメージをダウンロードできます。
docker pull mysql
docker pull next cloud
次に、doker-compose用の定義ファイルを作成します。
version: '3'
volumes:
db:
app:
services:
db:
restart: always
image: mariadb
container_name: db-container
ports:
- 5432:3306
expose:
- 5432
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=rootpass
- MYSQL_PASSWORD=userpass
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_TCP_PORT=5432
app:
restart: always
container_name: nextcloud-app
image: nextcloud
volumes:
- ./app:/var/www/html
ports:
- 12345:80
depends_on:
- db
environment:
- MYSQL_PASSWORD=userpass
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db:5432
(1)既存のmysqlのポート番号3306は本体サーバー上で使用されているため、ポート番号5432を使用する。
mysqlのデータベース側「ports: 5432:3306」として、外部通信「expose: 5432」で宣言します。
nextcloud側でポート番号5432を利用したmysqlをりようするため環境変数を「MYSQL_HOST=db:5432」
とします。
Dockerイメージの永続化
最終的に、以下のコマンド「docker-compose up -d」を入力してバックグラウンドでスタートして終了です。
ここで、エラーがでないか「docker-compose up 」としてフォアグラウンド処理で確認してみるのも良いかと思います。
% docker-compose up -d
[+] Running 3/3
⠿ Volume "user_app" Created 0.0s
⠿ Container nextcloud-app Started 0.3s
⠿ Container mysql-container Started
ブラウザからアクセス
その後、適当なSafariなどのブラウザ上のURLへ「http://localhost:12345」を入力すると以下のようにNextcloudが起動します。
こちらクリックしてMySQLのデータベース設定を入力しインストールします。
ここでは以下のように設定されているため、入力も同様に行います。
コンテナ内に入る方法
Docker-composeでのコンテナを確認すると2つのコンテナが確認できます。
% sudo docker compose ps
NAME COMMAND SERVICE STATUS PORTS
mysql-container "docker-entrypoint.s…" mysql running 0.0.0.0:3309->3306/tcp, :::3309->3306/tcp
nextcloud-app "/entrypoint.sh apac…" app running 0.0.0.0:8080->80/tcp, :::8080->80/tcp
何か問題が起こった場合には、データベースの設定に問題がある場合があります。
この場合、コンテナイメージに入って修正します。
Docker composeでnextcloud-appを起動するためには、「app」にて以下のようにコマンド入力します。
sudo docker compose exec app bash
/var/www/html/config 内の「confi.php」のデータベース内を確認します。
Docker composeの停止
Composeの停止は以下のコマンドでできます。このとき、networkと2つのコンテナが停止します。
sudo docker compose down
[+] Running 3/3
? Container nextcloud-app Removed 1.4s
? Container mysql-container Removed 0.1s
? Network user_default Removed
まとめ
本記事のまとめは、
コメント