分别采用doker-compose和docker-ce两种方式搭建NextCloud,数据库均使用mariadb。

2021/09/06


docker-compose

  1. 新建一个文件夹作为根目录,这里以/root/nextcloud为例

    1. mkdir /root/nextcloud
  2. 新建一个docker-compose.yml文件

    1. cd /root/nextcloud
    2. vim docker-compose.yml
  3. 输入以下内容:wq保存退出,记得填好自己的数据库密码和挂载地址 ```yaml version: “2.1”

services: nextcloud-db: image: linuxserver/mariadb container_name: nextcloud-db restart: unless-stopped volumes:

  1. - /root/nextcloud/db:/config
  2. environment:
  3. - PUID=1000
  4. - PGID=1000
  5. - TZ=Aisa/Shanghai
  6. #数据库root密码
  7. - MYSQL_ROOT_PASSWORD=
  8. #数据库nextcloud密码
  9. - MYSQL_PASSWORD=
  10. - MYSQL_DATABASE=nextcloud
  11. - MYSQL_USER=nextcloud

nextcloud: image: linuxserver/nextcloud restart: unless-stopped ports:

  1. - 9443:443
  2. container_name: nextcloud
  3. volumes:
  4. - /root/nextcloud/config:/config
  5. - /root/nextcloud/data:/data
  6. - /root/nextcloud/mnt:/mnt
  7. environment:
  8. - UID=1000
  9. - GID=1000
  10. - TZ=Aisa/Shanghai
  11. #data没有写入权限时,比如文件夹是挂载的,需要提权
  12. #privileged: true

phpmyadmin: image: linuxserver/phpmyadmin container_name: nextcloud-phpmyadmin environment:

  1. - PUID=1000
  2. - PGID=1000
  3. - TZ=Aisa/Shanghai
  4. - PMA_ARBITRARY=1
  5. #volumes:
  6. # - /root/nextcloud/phpmyadmin:/config
  7. ports:
  8. - 9980:80
  9. restart: unless-stopped
  1. > 提权后登入可能会显示设置为0770权限,启动起来后要进去容器/config/config.php加上这一句
  2. ```php
  3. 'check_data_directory_permissions' => false
  1. 启动docker-compose.yml,-d后台运行
    1. docker-compose up -d

    启动完成后,输入你的ip:9443进入nextcloud页面配置。
    部分配置较低的机器(比如我的1C2G)可能会卡住,怎么刷新都卡在了创建用户界面,这时只需要把容器dowm再up就可以了,配置会留在映射的宿主机地址,如果需要完全重新创建,记得去宿主机删除对应的映射文件夹或者换一个地址。

docker-ce + network

容器间采用network链接网络,当然也可以使用—link参数。使用docker-compose是自动创建在同一个网络下。

  1. 拉取镜像

    1. #nextcloud
    2. docker pull linuxserver/nextcloud
    3. #mariadb
    4. docker pull linuxserver/mariadb
    5. #mysql可视化管理工具
    6. docker pull linuxserver/phpmyadmin
  2. 查看镜像列表

    1. docker images
  3. 创建网络

    1. docker network create network-nextcloud
  4. 启动nextwork容器

    1. docker run -d \
    2. --network network-nextcloud \
    3. --network-alias nextcloud \
    4. --restart=always \
    5. --name nextcloud \
    6. -v /root/nextcloud:/var/www/html \
    7. -v /root/nextcloud/config:/config
    8. -v /root/nextcloud/data:/data
    9. -p 9443:443 \
    10. -e UID=1000
    11. -e GID=1000
    12. -e TZ=Aisa/Shanghai
    13. linuxserver/nextcloud
  5. 启动mariadb容器

    1. docker run -d \
    2. --network linuxserver/mariadb \
    3. --network-alias mariadb \
    4. --restart=always \
    5. --name nextcloud_db \
    6. -v /root/nextcloud/db:/config
    7. -e PUID=1000
    8. -e PGID=1000
    9. -e TZ=Aisa/Shanghai
    10. -e MYSQL_ROOT_PASSWORD=Dd1
    11. -e MYSQL_PASSWORD=13245678
    12. -e MYSQL_DATABASE=nextclou
    13. -e MYSQL_USER=nextcloud
    14. linuxserver/mariadb
  6. 启动myadmin容器

    1. docker run -d \
    2. --network network-nextcloud \
    3. --network-alias myadmin \
    4. --restart=always \
    5. --name nextcloud_db_myadmin \
    6. -e PUID=1000
    7. -e PGID=1000
    8. -e TZ=Aisa/Shanghai
    9. -e PMA_ARBITRARY=1
    10. -p 9888:80 \
    11. linuxserver/phpmyadmin
  • ip:9443进入nextcloud主页,本地ip为localhost,这个镜像默认是不开80端口的,有需要可以进文件夹找nginx文件做代理配置。
    配置管理员账户密码,数据库选择mariadb,数据库主机输入mariadb:3306