Docker部署Nextcloud及其使用方法
Docker安装
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker的应用场景
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
Docker 的优点
Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
1、快速,一致地交付您的应用程序
Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。
容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:
- 您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
- 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
- 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
- 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。
2、响应式部署和扩展
Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
3、在同一硬件上运行更多工作负载
Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。
Ubuntu环境下安装Docker
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
启动Docker
sudo systemctl enable docker.service
sudo systemctl start docker
验证Docker安装成功
docker version
#有信息输出
Docker-compose
Compose 简介
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
如果你还不了解 YML 文件配置,可以先阅读 YAML 入门教程。
Compose 使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -O /usr/local/bin/docker-compose
如果这一步失败,请直接到GitHub在本地下载docker-compose可执行文件
上传至服务器的/usr/local/bin/
文件夹,并将文件改名为docker-compose
添加运行权限
chmod +x /usr/local/bin/docker-compose
验证docker-compose命令
docker-compose -v
Nextcloud的docker-compose部署方法
创建用于保存nextcloud配置和文件的目录
mkdir -p /nextcloud/nginx # 存放nginx配置
mkdir -p /nextcloud/db # 存放数据库文件
mkdir -p /nextcloud/app # 存放nextcloud程序包,以后出现问题了可以修改里面的php配置文件
切换到/nextcloud/
文件夹下
cd /nextcloud/
创建docker-compose.yaml
nano docker-compose.yaml
输入以下内容
version: '2'
#volumes:
#nextcloud:
#db:
services:
db:
image: mariadb:10.5
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
networks:
- nextcloud_netbridge
volumes:
- /nextcloud/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_PASSWORD=nextcloud
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
restart: always
ports:
- 11000:80
networks:
- nextcloud_netbridge
links:
- db
volumes:
- /nextcloud/app:/var/www/html
environment:
- MYSQL_PASSWORD=nextcloud
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
networks:
nextcloud_netbridge:
driver: bridge
如果想把端口映射改为80,可以将上面的
ports:
- 11000:80
改为
ports:
- 80:80
最后启动集成配置
docker-compose -f /nextcloud/compose.yaml up -d
通过http://ip:11000
如http://localhost:11000
即可访问nextcloud
进入之后创建管理员账号,设置密码
修改Trusted domains(选做)
Nextcloud是很注重安全性的开源网盘项目。它阻止除白名单外的一切访问方式
官方文档是:
Trusted domains
All URLs used to access your Nextcloud server must be whitelisted in your config.php file, under the trusted_domains setting. Users are allowed to log into Nextcloud only when they point their browsers to a URL that is listed in the trusted_domains setting. You may use IP addresses and domain names. A typical configuration looks like this:
'trusted_domains' =>
array (
0 => 'localhost',
1 => 'server1.example.com',
2 => '192.168.1.50',
3 => '[fe80::1:50]',
),
查看docker容器
docker ps -a
输出类似:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f392845aba1e nextcloud "/entrypoint.sh apac…" 18 hours ago Up 20 minutes 0.0.0.0:11000->80/tcp, :::11000->80/tcp nextcloud-app-1
2c614b0dca75 mariadb:10.5 "docker-entrypoint.s…" 18 hours ago Up 18 hours 3306/tcp nextcloud-db-1
找到nextcloud的ID
进入容器
docker exex -it <CONTAINER ID> /bin/bash
如
docker exec -it f392845aba1e /bin/bash
安装nano编辑器
apt update
apt install nano
进入config文件夹
cd config
修改config.php
nano config.php
找到trusted_domains
写入你要添加的域名
像这样:
'trusted_domains' =>
array (
0 => 'localhost',
1 => 'server1.example.com',
2 => '192.168.1.50',
3 => '[fe80::1:50]',
),
Ctrl + o保存,回车确定,Ctrl+x退出
最后退出容器
exit
重启容器,使配置生效
docker restart <CONTAINER ID>
如:
docker restart f392845aba1e
使用命令行上传
方法一
curl -u USER:PASSWORD -T PUSHFILEPATH "NEXTCLOUDwebDEV"
USER
你的登录nextcloud的账号
PASSWORD
你的登录nextcloud的密码
PUSHFILEPATH
你要上传文件的路径
NEXTCLOUDwebDEV是一个URL
获取地址 web登录NEXTCLOUD 点击上边文件 然后点击左下角设置 会出现一个webDEV的,下边方框里的URL就是了
这是一个家目录,如果想上传到家目录下某个目录下,可以直接在URL后跟路径就行
方法二
写一个脚本push_nextcloud.sh(命名随意)
#!/bin/bash
USER=""
PASSWD=""
WEBDEV=""
curl -u $USER:$PASSWD -T $1 "$WEBDEV$2"
上传命令
bash push_nextcloud.sh pushfile path
使用命令行下载
首先在nextcloud里面把要下载的文件共享出来,得到共享链接
得到的链接一般是这样的:
http://example.com/s/5Q8A4zjJG4qgLFw
在末尾添加/download/文件名:
http://example.com/s/5Q8A4zjJG4qgLFw/download/Birdie.jpg
使用wget
wget http://example.com/s/5Q8A4zjJG4qgLFw/download/Birdie.jpg
使用curl
curl -O -L http://example.com/s/5Q8A4zjJG4qgLFw/download/Birdie.jpg
TBD:服务器部署+绑定二级域名
TODO
参考资料
参考来源:
使用docker-compose安装Nextcloud_docker-compose nextcloud_上海一亩地的博客-CSDN博客
nextcloud:linux命令行上传文件_nextcloud上传文件夹_糖℃ᶫᵒᵛᵉᵧₒᵤ的博客-CSDN博客
标签:容器,compose,部署,Docker,com,docker,nextcloud From: https://www.cnblogs.com/codealan/p/17556552.html