Docker+NextCloud


利用環境

OS:CentOS7

Dockerの導入

インストール


sudo yum -y install docker

確認


docker --version

サービスの開始・自動起動


$ sudo systemctl start docker
$ sudo systemctl enable docker

sudoなし設定


# dockerグループを作成する
$ sudo groupadd docker

# ログイン中のユーザーをdockerグループに追加する
$ sudo gpasswd -a $USER docker

# Dockerを再起動する
$ sudo systemctl restart docker

# exitして再ログインすると反映される
$ exit

Docker Composeの導入

インストール


# Docker Composeの最新版をダウンロードする
# `1.25.4` の値はバージョンに応じて変更する
$ sudo curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# バイナリの実行権限を適用する
$ sudo chmod +x /usr/local/bin/docker-compose

確認


docker-compose --version

NextCloudのベース作成

NextCloudのコンテナを作成するディレクトリに作成、移動後作業開始

下記のdocker-compose.ymlを作成する。


version: '2'

volumes:
  nextcloud:
  db:
  redis:
services:
  db:
    image: mariadb
    restart: always
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_VERSION=5.7
      - MYSQL_ROOT_PASSWORD=root # 適当なパスワードを設定
      - MYSQL_PASSWORD=root      # 適当なパスワードを設定
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    ports:
      - 8080:80
    depends_on:
      - db
      - redis
    volumes:
      - nextcloud:/var/www/html
    restart: always
    environment:
      - MYSQL_HOST=db
      - REDIS_HOST=redis
  redis:
    image: redis
    restart: always
    volumes:
        - redis:/data

コンテナの導入


docker-compose up -d

MARIADBの設定

コンテナの内部IPを下記の方法で調べておく

DBコンテナに入る


docker exec -it nextcloud_db_1 bash

rootでmysqlに入る


mysql -u root -p

他コンテナからのアクセス用ユーザー作成


CREATE USER 'root'@'172.19.0.2' IDENTIFIED BY 'root';
CREATE USER 'root'@'172.19.0.3' IDENTIFIED BY 'root';

CREATE DATABASE IF NOT EXISTS nextcloud;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON nextcloud.* TO 'root'@'172.19.0.2' IDENTIFIED BY 'root';
CREATE TEMPORARY TABLES ON nextcloud.* TO 'root'@'172.19.0.3' IDENTIFIED BY 'root';
FLUSH privileges;

ブラウザで確認