docker-compose部署nextcloud及onlyoffice、redis

一、版本描述

Ubuntu:22.04

Nextcloud:28.0.2

Onlyoffice:7.5.1

MariaDB:11.2.2

redis:7.2.4

二、docker、docker-compose安装

三、准备环境:

创建数据目录
mkdir -vp /root/app/nextcloud/{cronsh,data} /root/app/onlyoffice/{logs,data} /root/app/mariadb/{config,data} /root/app/redis/{conf,data}

四、docker-compose.yml文件

version: '2'

services:
  nextcloud:
    image: nextcloud
    container_name: nextcloud
    volumes:
      - /root/app/nextcloud/data:/var/www/html
    networks:
      - nextcloud_default
    depends_on:
      - redis
    restart: always
    ports:
      - 8080:80
    links:
      - mariadb:mariadb
      - onlyoffice:onlyoffice

  mariadb:
    image: mariadb
    container_name: mariadb
    ports:
      - 3307:3306
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=XXXX
    volumes:
      - /root/app/mariadb/data:/var/lib/mysql
      - /root/app/mariadb/config:/etc/mysql/conf.d
    networks:
      - nextcloud_default
    restart: always

  onlyoffice:
    image: onlyoffice:7.5.1
    container_name: onlyoffice
    restart: always
    ports:
      - 9000:80
      - 9001:443
    environment:
      - REDIS_SERVER_HOST=redis
      - REDIS_SERVER_PORT=6379
    volumes:
      - /root/app/onlyoffice/logs:/var/log/onlyoffice
      - /root/app/onlyoffice/data:/var/www/onlyoffice/data
    networks:
      - nextcloud_default

  redis:
    image: redis
    ports:
      - 6379:6379
    container_name: redis
    volumes:
      - /root/app/redis/data:/data
      - /root/app/redis/conf:/etc/redis/redis.conf
    restart: always
    networks:
      - nextcloud_default

networks:
  nextcloud_default:
    external: true

五、启动docker-compose

创建网络

docker network create nextcloud_default

启动docker

docker-compose up -d

六、MariaDB数据库配置(必要)

1. 允许任意地址访问数据库

## 复制mariadb配置文件到宿主机
docker cp mariadb:/etc/mysql/mariadb.conf.d/50-server.cnf /root/50-server.cnf
vim 50-server.cnf
## 找到bind-address ,更改为
bind-address  = 0.0.0.0

## 把更改后的文件复制到mariadb容器中
docker cp /root/50-server.cnf mariadb:/etc/mysql/mariadb.conf.d/50-server.cnf

## 进入mariadb容器中确认是否更改
docker exec -it mariadb bash
cat /etc/mysql/mariadb.conf.d/50-server.cnf

2.创建nextcloud数据库

## 进入数据库
root@4b04eca13e79:/# mariadb -u root -p
## 创建数据库,user,密码等
CREATE USER 'nextcloud'@'%' IDENTIFIED BY 'XXXXX';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'%';
flush privileges;
## 查看数据库与user是否创建
show databases;
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

3.重启mariadb

docker restart mariadb

七、配置nextcloud

1. 编辑config.php

行末添加
'default_language' => 'zh_CN',  #默认语言
'default_locale' => 'zh',  #默认地区
'skeletondirectory' => '', #新用户默认无任何文件
'memcache.local' => '\OC\Memcache\Redis', #更改为redis
# 配置内存为redis
  'memcache.distributed' => '\OC\Memcache\Redis',
  'memcache.locking' => '\OC\Memcache\Redis',
  'redis' => array(
     'host' => 'XXXX',  ##宿主机的IP
     'port' => 6379,
     ),

2.配置cron

cd /app/nextcloud/cronsh/
vim nextcloud.sh
内容如下

#!/bin/bash
docker exec --user www-data nextcloud  php /var/www/html/cron.php

添加权限
chmod 777 /app/nextcloud/cronsh/nextcloud.sh
添加任务
vim /etc/crontab

*/5    * * * * root    /root/app/nextcloud/cronsh/nextcloud.sh

重启服务
systemctl restart cron

3. 安装onlyoffice插件

  1. 离线下载onyoffice插件:下载地址

  2. 我的nextcloud是28版本,所以下载对应28版本插件
    在这里插入图片描述

  3. 复制插件到宿主机/root/nextcloud/app/nextcloud/data/apps

  4. 解压插件

root@office:~/nextcloud/app/nextcloud/data/apps# tar -xvf onlyoffice.tar.gz

八、登陆http://IP:8080,初始化nextcloud及配置

1.初始化nextcloud

在这里插入图片描述

2.启用插件

在这里插入图片描述

3.配置插件

进入onlyoffice容器,获取密钥

docker exec -it onlyoffice bash
cat /etc/onlyoffice/server/local.josl

在这里插入图片描述
在这里插入图片描述

4.配置onlyoffice字体

onlyoffice原生字体会引起excel中文乱码
需要重新添加字体
解决方法:删除onlyoffice自带字体,并导入新字体

4.1 删除onlyoffice原生字体
docker exec -it onlyoffice /bin/bash
cd /var/www/onlyoffice/documentserver/core-fonts
rm -rf *
cd /usr/share/fonts/
rm -rf *
4.2 拷贝需要的字体到docker中

一、复制windows下的字体到服务器中,例“微软雅黑”、“宋体”
在这里插入图片描述

二、复制字体到onlyoffice,并启用字体

docker cp ./fonts/ c31:/usr/share/fonts/truetype/custom/
docker exec -it onlyoffice /bin/bash
cd /usr/bin
documentserver-generate-allfonts.sh

三、验证
在这里插入图片描述
在这里插入图片描述

### 回答1: Docker-composeDocker 官方提供的一个工具,用于定义和运行多个 Docker 容器的应用程序。使用 Docker-compose 部署 Redis,可以快速、方便地创建和管理 Redis 容器。 以下是使用 Docker-compose 部署 Redis 的步骤: 1. 安装 DockerDocker-compose。 2. 创建一个名为 docker-compose.yml 的文件,并在其中定义 Redis 容器的配置。例如: ``` version: '3' services: redis: image: redis:latest ports: - "6379:6379" ``` 3. 在终端中进入 docker-compose.yml 文件所在的目录,运行以下命令启动 Redis 容器: ``` docker-compose up -d ``` 4. 等待一段时间,直到 Redis 容器启动完成。可以使用以下命令查看容器状态: ``` docker-compose ps ``` 5. 使用 Redis 客户端连接 Redis 容器。例如: ``` redis-cli -h localhost -p 6379 ``` 6. 在 Redis 容器中执行 Redis 命令。例如: ``` set mykey "Hello World" get mykey ``` 以上就是使用 Docker-compose 部署 Redis 的基本步骤。需要注意的是,这只是一个简单的示例,实际应用中可能需要更复杂的配置。 ### 回答2: Docker-ComposeDocker官方提供的一个类似于编排工具的东西,通过yaml文件来管理多个容器的启动和连接,非常适合进行多容器的本地开发和测试。 Redis是一个非关系型数据库,被广泛用于缓存系统和分布式存储系统中。使用Docker-Compose可以快速部署Redis集群,以下是具体步骤: 1. 确认本地已经安装了DockerDocker-Compose。 2. 创建一个docker-compose.yaml文件,内容如下: version: '3' services: redis-master: image: 'redis:6.2.5-alpine' container_name: 'redis-master' ports: - '6379:6379' redis-slave: image: 'redis:6.2.5-alpine' container_name: 'redis-slave' ports: - '6380:6379' command: redis-server --slaveof redis-master 6379 在这个文件中,我们有两个服务:redis-master和redis-slave。redis-master将在启动时创建一个Redis实例,redis-slave将在启动时连接到redis-master,并成为redis-master的副本。 3. 打开命令行终端,导航到docker-compose.yaml所在的目录,并启动服务: $ docker-compose up 这将在终端中输出服务启动日志。 4. 验证Redis集群是否成功启动。我们可以使用Redis客户端来连接到Redis实例并执行一些基本命令: $ redis-cli -p 6379 127.0.0.1:6379> set mykey "Hello Redis" OK 127.0.0.1:6379> get mykey "Hello Redis" 127.0.0.1:6379> 在这个例子中,我们使用redis-cli连接到redis-master并将“Hello Redis”设置为名为“mykey”的值,然后再次连接到redis-master以确保该值已正确存储。 通过以上步骤,就可以使用Docker-Compose部署Redis集群,非常简单方便。同时,由于使用了Docker,可以实现快速的容器部署,大大提高了开发和部署的效率。 ### 回答3: Docker-Compose是一种方便的工具,可以使Docker容器化的部署更加容易。在这里,我们将介绍如何使用Docker-Compose部署RedisRedis是一个高性能的开源键值存储数据库,广泛用于缓存,队列和实时分析等方面。 首先,我们需要编写一个docker-compose.yaml文件来定义Redis容器的配置。我们需要定义一个Redis服务,指定容器的名称,所需的镜像,端口映射,以及其他必要的配置项。示例如下: ```yaml version: '3' services: redis: image: redis:latest container_name: myredis restart: always ports: - 6379:6379 ``` 在这个配置中,我们定义了一个名为redis的服务,基于redis:latest镜像启动。我们映射主机的6379端口到容器的6379端口,使得外部应用可以连接到Redis服务。另外,我们指定了容器的重启策略,当容器异常退出时,会自动重新启动。 接下来,使用docker-compose命令行工具来启动Redis容器: ```bash docker-compose up -d ``` 这个命令将会在后台启动Redis服务,并输出容器的运行日志。我们可以用docker-compose ps命令查看容器的状态: ```bash docker-compose ps ``` 如果一切正常,我们应该能看到容器正在运行中。然后,我们可以使用任何适当的Redis客户端连接到Redis服务: ```bash redis-cli 127.0.0.1:6379> ping PONG ``` 到此,我们已经成功地使用Docker-Compose部署Redis服务。使用Docker-Compose的优点包括:一键启动一个完整的Redis服务,可自定义容器配置和参数,方便协作和分享等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值