安装

首先到 https://registry.hub.docker.com/_/nextcloud 获取 Nextcloud 的示例 docker-compose

version: '2'

volumes:
nextcloud:
db: services:
db:
image: mariadb
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_PASSWORD=
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud app:
image: nextcloud:fpm
restart: always
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db web:
image: nginx
restart: always
ports:
- 8080:80
links:
- app
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
volumes_from:
- app

修改其为适合自己使用的版本,如我是这么修改的

version: '2'

volumes:
nextcloud:
db: services:
db:
image: mariadb
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --skip-innodb-read-only-compressed
volumes:
- /home/puzhiwei/docker/nextcloud/mysql/lib:/var/lib/mysql
- /home/puzhiwei/docker/nextcloud/mysql/etc:/etc/mysql
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_PASSWORD=
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud app:
image: nextcloud:fpm
restart: always
links:
- db
volumes:
- /home/puzhiwei/docker/nextcloud/config:/var/www/html/config
- /home/puzhiwei/docker/nextcloud/data:/var/www/html/data
- /home/puzhiwei/docker/nextcloud/apps:/var/www/html/custom_apps
environment:
- MYSQL_PASSWORD=
- MYSQL_DATABASE=
- MYSQL_USER=nextcloud
- MYSQL_HOST=db web:
image: nginx
restart: always
ports:
- 81:80
links:
- app
volumes:
- /home/puzhiwei/docker/nextcloud/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
volumes_from:
- app

mariadb 配置

我主要添加了 Docker 容器到本地文件的映射,为 mariadb 添加了 --skip-innodb-read-only-compressed 启动命令,如果没有这段启动命令,会出现

nextcloud install Error while trying to initialise the database: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.

的异常。

Nginx 配置

此处首先要到 https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/nginx.conf 获取需要的Ningx 配置文件,之后设定相应的文件映射。

启动

直接使用 docker-compose up -d 等待镜像下载运行完成即可。

然后访问 http://ip:81 设置管理员账号,完成安装。

踩坑

如何配置 cron 任务

首先在容器中安装需要的软件

# 安装 cron
apt update
apt install cron # 安装 vim
apt install vim # 启动 cron
service cron start

由于是在 Docker 容器中运行的 Nextcloud,进入docker 容器默认是 root 用户,此时执行 php -f /var/www/html/cron.php 会出现

Console has to be executed with the user that owns the file config/config.php
Current user id: 0
Owner id of config.php: 33

的异常,因为 cron.php 需要使用 www-data 用户来执行

而 docker 容器中又缺少相应的权限管理工具。

此时我们需要在进入 Nextcloud 镜像之后执行

root@50ce68418e44:/var/www/html# chsh -s /bin/bash www-data
root@50ce68418e44:/var/www/html# su - www-data

将自己切换到 www-data 用户

然后执行

php -d memory_limit=-1 -f /var/www/html/cron.php --define apc.enable_cli=1

注意此处不加 memory_limit=-1 会出现

Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 438272 bytes) in /var/www/html/3rdparty/composer/autoload_real.php on line 37

的异常。

运行成功后我们就可以配置定时任务了

运行

# 设置 crontab
crontab -e

然后添加

*/5 * * * * chsh -s /bin/bash www-data && su - www-data && php -d memory_limit=-1 -f /var/www/html/cron.php --define apc.enable_cli=1

即可完成 Nextcloud 的 cron 配置

更多 cron 配置请参照 Nextcloud 文档:https://docs.nextcloud.com/server/23/admin_manual/configuration_server/background_jobs_configuration.html

版权

本文首发于 https://www.buguagaoshu.com/archives/nextcloudfpmban-zai-dokcerxia-an-zhuang-cai-keng

转载请注明来源

Nextcloud fpm 版在 Dokcer 下安装踩坑的更多相关文章

  1. Android Studio安装踩坑

    title: Android Studio安装踩坑 date: 2018-09-07 19:31:32 updated: tags: [Android,Android Studio,坑] descri ...

  2. Faster_Rcnn在windows下运行踩坑总结

    Faster_Rcnn在windows下运行踩坑总结  20190524 今天又是元气满满的一天! 1.代码下载 2.编译 3.下载数据集 4.下载pre-train Model 5.运行train ...

  3. Mac下Charles踩坑记录

    初次使用Charles,摸索着抓包的过程中遇到了很多问题.在这里一一记录一下,避免其他初学者踩坑. 问题1:不显示request和response? 在Charles的配置页面可以勾选是否把reque ...

  4. selinium的ruby版在windows8下安装

    1.安装ruby,当然windows下是最简单的装一个rubyinstaller,官网有.一步到位 2.因为selinium官网被墙,所以改成淘宝的一个资源库 gem sources --remove ...

  5. windows7旗舰版64位下安装、破解及执行QTP11报错

    说明:假设你出现了下面几种情况,希望能解决你的问题:假设没有,就当路过. 1.安装qtp11时报vc++ 2005缺少,但怎么也不能安装成功 解决方法: 1.找到qtp安装包里面的vc++ 2005组 ...

  6. Win10自带Ubuntu子系统下Mysql安装踩坑记录

    linux系统为win10自带Ubuntu子系统 错误的安装过程 我按照一般的方法安装mysql,安装步骤如下 1.升级源 $ sudo apt-get update 2.安装mysql $ sudo ...

  7. Linux下pcstat安装踩坑教程

    首先安装golang 1.进入官方链接下载对应自己系统版本的Golang安装包:https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz root@ub ...

  8. React-Native android在windows下的踩坑记

    坑很多,跳之前做好准备.没有VPN的同学请浏览完本文后慎行.   你需要先安装最新版本的node.js(我最后使用的是v4.1.2),前往官网下载>> 注:我win7已经安装过Visual ...

  9. Linux mint 安装踩坑记录

    记得之前电脑上的那个Ubuntu是去年寒假的时候安装的,算下来自己用Linux也快一年了.虽然在去年暑假的时候我也曾经想过要把Ubuntu升级到18.04可是当时安装了几次都没有成功,自己也就放弃了. ...

随机推荐

  1. 6U VPX i7 刀片计算机

    一.产品概述 该产品是一款基于第三代Intel i7双核四线程(或四核八线程)的高性能6U VPX刀片式计算机.产品提供了可支持全网状交换的高速数据通道,其中P1,P2各支持4个PCIe x4 Gen ...

  2. [LeetCode]35.搜索插入位置(Java)

    原题地址: search-insert-position 题目描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 请必须使 ...

  3. 我们一起来学Shell - 正则表达式

    文章目录 什么是正则表达式 正则表达式元字符 正则表达式应用举例 POSIX 方括号表达式 POSIX 字符集列表: 我们一起来学Shell - 初识shell 我们一起来学Shell - shell ...

  4. CentOS 7 下编译安装 4.14 内核

    文章目录 rpm升级 编译升级 升级前 下载安装包 编译内核 更新启动引导 修改默认启动内核 重启之后验证 rpm升级 # rpm的方式升级内核 1.载入内核公钥 [root@localhost ~] ...

  5. Spring源码之@Configuration注解解析

    1.前言 ​ Spring注解开发中,我们只需求要类上加上@Configuration注解,然后在类中的方法上面加上@Bean注解即可完成Spring Bean组件的注册.相较于之前的xml配置文件定 ...

  6. 个人站bitlove.cn

    新启用了个人网站 微爱博客 http://bitlove.cn 有兴趣的可以移步交流

  7. Smartbi大数据在金融业的应用案例

    我们平时听说的商业智能其实就是BI分析,它是一种提高企业智能化的手段和工具,既可以满足企业发展的需要,而且也可提高企业竞争力.思迈特软件Smartbi作为数据分析系统,受到了不少金融业客户的青睐.今天 ...

  8. Vue框架简介和环境搭建

    前言: 此篇随笔为个人学习前端框架Vue,js的技术笔记,主要记录一些自己在学习Vue框架的心得体会和技术总结,作为回顾和笔记使用. 这种写博客的方式,对刚开始学习Vue框架的我,也是一种激励,我相信 ...

  9. linux服务器随机10字符病毒/libudev4.so病毒清理的过程

    故障表现:某天晚上突然收到某项目一台web服务器CPU报警,SSH连接困难卡顿,登陆后发现CPU使用率飙升到700%,第一感觉是被黑了,来事了. 故障处理: 1.登陆上后发现有好多莫名的命令(who/ ...

  10. NTLK情感分析安装与使用的两种方式 nltk-python

    下载安装到实战详细步骤 NLTK下载安装 先使用pip install nltk 安装包 然后运行下面两行代码会弹出如图得GUI界面,注意下载位置,然后点击下载全部下载了大概3.5G. import ...