蔵風人

If you try it, it will be somehow & Simple is Best!

[ HOME ]  [ About ]  [ Linux ]  [ CMS ]  [Python]  [ Blog ]


[ 最終更新日:2026-05-27(Wed) 21:43 ]

docker-composeはサーバ間の連携図面 サーバ運用ならdocker-composeでスマートに(Nextcloud phpmyadmin)

1.はじめに

最近 docker-compose を使うことになったので、その使い方を記録。

Raspi上のDebianで作成していたNextcloudのアップグレードができない。以下のような警告が出るようになって久しい。

2024/01/07 phpmyadmin 追記

Nextcloud Hub II (23.0.0) あなたが実行しているバージョンはもうサポートされていません。 サポートされているバージョンにすみやかにアップデートしてください。

他方で

Nextcloud 23 is the last release supporting PHP 7.3. Nextcloud 24 requires at least PHP 7.4.

つまり、PHP7.4にアップグレードされない限り、Nextcloudはアップグレードできないというわけだが、まだDebianはその気がないようだ。

しかし、dockerを使えば、最新のNextcloudが使えるはず。しかもdockerさえ機能すれば、docker上のphpも最新版で動かせるはず。しかもdocker-composeを使ったら簡単に作成できるかもしれないと思い、思い切って始めた。だめだったら思い切って削除もできるという手軽さも、docker導入の一つの理由だ。

2.システム要件

dockerが正常に起動すれば良い。

3.作成順序

  1. docker のインストール、起動及び有効化
  2. docker-compose のインストール
  3. Nextcloud および mariadb のインストール
  4. ymlファイル(設計図)の作成
  5. docker-compose の起動
  6. Nextcloudの管理者設定

note! もっと効率的な方法
Nextcloud mariadb のインストール後に、yml ファイルを作成しと順序立てて書いたが、インストールしないで yml ファイルを作成し、docker-compose で起動すれば、インストールから起動までやってくれるので、次の第6項を省略し、第7項に飛んだほうが楽だ。

4.docker のインストール、起動及び有効化

$ sudo pacman -S docker
$ sudo systemctl start docker
$ sudo systemctl enable docker

5.docker-composeのインストール

$ sudo pacman -S docker-compose

6.Nextcloud と mariadb のインストール

$ sudo dokcer pull nextcloud
$ sudo docker pull mariadb
$ sudo docket pull phpmyadmin

7,ymlファイルの作成

$ sudo mkdir /etc/compose/nextcloud.yml

volumes:
  nextcloud:
  db:
  phpmyadmin:

services:
  db:
    image: mariadb:10.6
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=xxxxxxxx
      - MYSQL_PASSWORD=xxxxxxxxx
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    restart: always
    ports:
      - 8080:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
    environment:
      - MYSQL_PASSWORD=xxxxxxxx
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db

  phpmyadmin:
    image: phpmyadmin
    depends_on:
      - db
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOSTS=db
      - PMA_USER=root
      - PMA_PASSWORD=xxxxxxxx
    ports:
      - "3001:80"

8.Nextcloud phpmyadmin の起動

$ sudo docker-compose -f /etc/compose/nextcloud.yml up -d

9.ブラウザでのアクセス

http://xxx.xxx.xxx.xxx:8080

管理者名と管理者バスワードを入力すれば、一丁出来上がり。

phpmyadmin へのアクセスには http://xxx.xxx.xxx.xxx:3001 だ

10.ちょっと改良

上記の sudo docker-compose -f /etc/compose/nextcloud.yml up -d コマンドを nextcloud_up というファイル名で作成、実行権限を与えておく

cron に このコマンドを @reboot 時に起動するよう設定しておく。

11.補足

以下の警告が発生することがある。

dockerd[957]: time=”2023-09-01T05:40:43.348167115+09:00″ level=warning msg=”failed to load plugin io.containerd.snapshotter.v1.aufs” error=”modprobe aufs failed: \”modprobe: FATAL: Module aufs not found in directory /lib/modules/5.10.103-v8+\n\”: exit status 1″

特に通常の運用に支障はないようなので、気にしないでも良いと思われる。