1、docker-compose.yml文件如下,拷贝时候注意缩进,不然docker会报错

version: '3'

networks:
  network:
   external: false

services:
  nextcloud:
    image: ghcr.io/wonderfall/nextcloud:22
    container_name: nextcloud-web
    depends_on:
      - nextcloud-db # If using MySQL
      - nextcloud-redis # If using Redis
    environment:
      - UID=1000
      - GID=1000
      - UPLOAD_MAX_SIZE=10G
      - APC_SHM_SIZE=128M
      - OPCACHE_MEM_SIZE=128
      - CRON_PERIOD=15m
      - TZ=Europe/Berlin
      - DOMAIN=localhost
      - ADMIN_USER=pengs361
      - ADMIN_PASSWORD=Yyp2020@
      - DB_TYPE=mysql
      - DB_NAME=nextcloud
      - DB_USER=nextcloud
      - DB_PASSWORD=Yyp2020@
      - DB_HOST=nextcloud-db
    volumes:
      - /data/data0/user:/nextcloud/data
      - ./nextcloud-web/config:/nextcloud/config
      - ./nextcloud-web/apps2:/nextcloud/apps2
      - ./nextcloud-web/themes:/nextcloud/themes
      - ./nextcloud-web/nginx/conf.d:/etc/nginx/conf.d
    networks:
      - network
    ports:
      - 8806:8888
    restart: unless-stopped

  nextcloud-db:
    image: mariadb:10.6.5
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed  #maybe not needed in the future
    container_name: nextcloud-db
    volumes:
      - ./nextcloud-db/db:/var/lib/mysql
      - ./nextcloud-db/my.cnf:/etc/mysql/my.cnf
    environment:
      - MYSQL_ROOT_PASSWORD=Yyp2020@
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=Yyp2020@
    networks:
      - network
        # ports:
        #- 3306:3306
    restart: unless-stopped

  nextcloud-redis:
    image: redis:alpine
    container_name: nextcloud-redis
    volumes:
      - ./nextcloud-redis/data:/data
    networks:
      - network
    restart: unless-stopped

2、容器启动完成后,nextcloud安装过程中会有权限错误,可用

 sudo chown -R 1000:1000 nextcloud-web/ && sudo chown -R 1000:1000 /data/data0/user && touch nextcloud-web/config/CAN_INSTALL

3、配置数据库的时候主机要将端口号也写上如:nextcloud-db:3306
4、如果一次没有配置成功,需要重新配置的话,记得一定要将mariadb原数据库相关文件全部删除
5、尽量提前配置好caddy tls,第一次设置nextcloud的时候使用https
6、迁移用户数据文件

docker exec --user www-data nextcloud php occ files:scan --all
docker exec --user www-data nextcloud php occ files:scan-app-data
docker exec --user www-data nextcloud php occ preview:pre-generate

7、优化上传
docker exec --user nextcloud nextcloud-web php occ config:app:set files max_chunk_size --value 0
8、优化mysql数据库参数
docker console至/etc/mysql/my.cnf 追加以下参数并重启数据库。
innodb_flush_log_at_trx_commit = 0
数据库登录命令 mysql -u root -p
登录数据库以后参数查询 SHOW VARIABLES like '%flush%';

❤️ 文章随意转载❤️