支持多家云存储驱动的公有云文件系统.
为什么要使用 PUID 和 PGID 参见 Understanding PUID and PGID。 假设当前登陆用户为 root
,则执行 id root
就会得到类似于下面的一段代码:
uid=1000(root) gid=1001(root)
则在运行命令中的 PUID 填入 1000
,PGID填入 1001
。
参考:
.env
# Required
# > PUID & PGID
CLOUDREVE_PUID=<PUID>
CLOUDREVE_PGID=<PGID>
# > Aria2
ARIA2_RPC_SECRET=<SECRET>
# Optional
# But I highly recommend you keep items below as default
# unless you know what you are doing.
# > Temp download folder for Aria2 & Cloudreve
TEMP_FOLDER_PATH=/dockercnf/aria2/temp
# > Aria2
ARIA2_CONFIG_PATH=/dockercnf/aria2/conf
# > Cloudreve
CLOUDREVE_UPLOAD_PATH=/sharedfolders
CLOUDREVE_CONF_PATH=/dockercnf/cloudreve/config
CLOUDREVE_DB_PATH=/dockercnf/cloudreve/db
CLOUDREVE_AVATAR_PATH=/dockercnf/cloudreve/avatar
根据需要对环境变量进行修改
必填项
CLOUDREVE_PUID: PUID的获取方式详见 获取 PUID 和 PGID CLOUDREVE_PGID: PGID的获取方式详见 获取 PUID 和 PGID ARIA2_RPC_SECRET: Aria2 RPC密码(你可以去 这里 生成随机字符串)。请记下该密码!在后续Cloudreve设置Aria2中会使用。
选填项(如无特殊需要不建议修改)
TEMP_FOLDER_PATH: 离线下载临时文件夹路径 ARIA2_CONFIG_PATH: Aria2的配置文件夹路径 CLOUDREVE_UPLOAD_PATH: Cloudreve上传文件夹路径 CLOUDREVE_CONF_PATH: Cloudreve配置文件夹路径 CLOUDREVE_DB_PATH: Cloudreve数据库文件夹路径
xavier-niu/cloudreve-docker 该docker-compose文件仅适用于linux/amd64架构,如果您正在使用arm请尝试修改部分参数。
docker-compose.yml
version: '3'
services:
aria2:
image: p3terx/aria2-pro
logging:
options:
max-size: 1m
ports:
- 6800:6800
- 6888:6888
- 6888:6888/udp
environment:
- PUID=${CLOUDREVE_PUID}
- PGID=${CLOUDREVE_PGID}
- RPC_SECRET=${ARIA2_RPC_SECRET}
volumes:
- ${ARIA2_CONFIG_PATH}:/config
- ${TEMP_FOLDER_PATH}:/downloads
networks:
- cloudreve-network
restart: unless-stopped
cloudreve:
image: xavierniu/cloudreve
ports:
- 5212:5212
environment:
- PUID=${CLOUDREVE_PUID}
- PGID=${CLOUDREVE_PGID}
volumes:
- ${CLOUDREVE_UPLOAD_PATH}:/cloudreve/uploads
- ${TEMP_FOLDER_PATH}:/downloads
- ${CLOUDREVE_CONF_PATH}:/cloudreve/config
- ${CLOUDREVE_DB_PATH}:/cloudreve/db
- ${CLOUDREVE_AVATAR_PATH}:/cloudreve/avatar
networks:
- cloudreve-network
networks:
cloudreve-network:
docker-compose up -d
说明
6800
,Secret为你对ARIA2_RPC_SECRET
设置的随机字符串。http://aria2:6800/
ARIA2_RPC_SECRET
设置的随机字符串/downloads
完成
参考:
如果要使用
docker-compose.yml
文件中定义的环境变量,则必须将它们放在.env
文件中。 你可以使用env_file
配置选项来使用具有变量定义的任何文件。
Compose 支持在名为.env
放置在项目目录中的环境文件中声明默认环境变量。如果 Docker Compose 版本早于1.28
,.env
则从执行命令的当前工作目录加载文件,如果使用--project-directory
选项显式设置,则从项目目录加载文件。这种不一致已经+v1.28
通过将默认.env
文件路径限制为项目目录来解决。您可以使用--env-file
命令行选项覆盖默认值 .env
并指定自定义环境文件的路径。
项目目录按优先顺序指定:
--project-directory
旗帜--file
标志的文件夹以下语法规则适用于该.env
文件:
env
文件中的每一行都符合VAR=VAL
格式。#
作为注释处理并被忽略。注意:
.env
文件中定义的值。同样,通过命令行参数传递的值也优先。.env
文件中定义的环境变量在容器内不会自动可见。要设置容器适用的环境变量,请遵循Compose中的环境变量主题中的指南,该主题 描述了如何将 shell 环境变量传递到容器、在 Compose 文件中定义环境变量等。$ cat .env
TAG=v1.5
$ cat docker-compose.yml
version: '3'
services:
web:
image: "webapp:${TAG}"
如果您有多个环境变量,则可以通过将它们添加到名为的默认环境变量文件.env
或使用--env-file
命令行选项提供环境变量文件的路径来替换它们。
您的配置选项可以包含环境变量。Compose 使用来自docker-compose
运行的 shell 环境的变量值。例如,假设 shell 包含POSTGRES_VERSION=9.3
并且您提供以下配置:
db:
image: "postgres:${POSTGRES_VERSION}"
当您docker-compose up
使用此配置运行时,ComposePOSTGRES_VERSION
在 shell 中查找 环境变量并将其值替换为 in。对于此示例,Compose在运行配置之前解析image
to postgres:9.3
。
如果未设置环境变量,Compose 将替换为空字符串。在上面的示例中,如果POSTGRES_VERSION
未设置,则该image
选项的值为postgres:
。
您可以使用.env
文件设置环境变量的默认值 ,Compose 会自动在项目目录(您的 Compose 文件的父文件夹)中查找该文件。在 shell 环境中设置的值会覆盖在.env
文件中设置的值。
使用 docker stack deploy 时的注意事项 该
.env file
功能仅在您使用该docker-compose up
命令时有效,而不适用于docker stack deploy
.
这两个$VARIABLE
和${VARIABLE}
语法的支持。此外,当使用2.1 文件格式时,可以使用典型的 shell 语法提供内联默认值:
${VARIABLE:-default}
评估default
是否VARIABLE
在环境中未设置或为空。${VARIABLE-default}``default
仅当VARIABLE
在环境中未设置时才评估为。同样,以下语法允许您指定必需变量:
${VARIABLE:?err}
退出并显示错误消息,其中包含环境中的err
if VARIABLE
未设置或为空。${VARIABLE?err}
退出并显示一条错误消息,其中包含err
if VARIABLE
在环境中未设置。${VARIABLE/foo/bar}
不支持其他扩展的 shell 样式功能,例如。
$$
当您的配置需要文字美元符号时,您可以使用(双美元符号)。这也可以防止 Compose 插入值,因此 a$$
允许您引用不想由 Compose 处理的环境变量。
web:
build: .
command: "$$VAR_NOT_INTERPOLATED_BY_COMPOSE"
如果您忘记并使用单个美元符号 ( $
),Compose 会将值解释为环境变量并警告您:
The VAR_NOT_INTERPOLATED_BY_COMPOSE is not set. Substituting an empty string.
docker-compose --env-file ./config/.env.dev up
单个容器指定 env-file
env_file:
version: '3'
services:
app:
image: nextcloud:fpm-alpine
container_name: nextcloud_app
restart: always
volumes:
- ${DATA_DIR_APP}:/var/www/html
environment:
- POSTGRES_HOST=db
- REDIS_HOST=redis
env_file:
- db.env
docker-compose run -e DEBUG=1 web python console.py
参考:
Grant access to secrets on a per-service basis using the per-service
secrets
configuration. Two different syntax variants are supported.The short syntax variant only specifies the secret name. This grants the container access to the secret and mounts it at
/run/secrets/<secret_name>
within the container. The source name and destination mountpoint are both set to the secret name.The following example uses the short syntax to grant the
redis
service access to themy_secret
andmy_other_secret
secrets. The value ofmy_secret
is set to the contents of the file./my_secret.txt
, andmy_other_secret
is defined as an external resource, which means that it has already been defined in Docker, either by running thedocker secret create
command or by another stack deployment. If the external secret does not exist, the stack deployment fails with asecret not found
error.
version: "3.9"
services:
redis:
image: redis:latest
deploy:
replicas: 1
secrets:
- my_secret
- my_other_secret
secrets:
my_secret:
file: ./my_secret.txt
my_other_secret:
external: true
https://github.com/nextcloud/docker
version: '3.2'
services:
db:
image: postgres
restart: always
volumes:
- db:/var/lib/postgresql/data
environment:
- POSTGRES_DB_FILE=/run/secrets/postgres_db
- POSTGRES_USER_FILE=/run/secrets/postgres_user
- POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password
secrets:
- postgres_db
- postgres_password
- postgres_user
app:
image: nextcloud
restart: always
ports:
- 8080:80
volumes:
- nextcloud:/var/www/html
environment:
- POSTGRES_HOST=db
- POSTGRES_DB_FILE=/run/secrets/postgres_db
- POSTGRES_USER_FILE=/run/secrets/postgres_user
- POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password
- NEXTCLOUD_ADMIN_PASSWORD_FILE=/run/secrets/nextcloud_admin_password
- NEXTCLOUD_ADMIN_USER_FILE=/run/secrets/nextcloud_admin_user
depends_on:
- db
secrets:
- nextcloud_admin_password
- nextcloud_admin_user
- postgres_db
- postgres_password
- postgres_user
volumes:
db:
nextcloud:
secrets:
nextcloud_admin_password:
file: ./nextcloud_admin_password.txt # put admin password in this file
nextcloud_admin_user:
file: ./nextcloud_admin_user.txt # put admin username in this file
postgres_db:
file: ./postgres_db.txt # put postgresql db name in this file
postgres_password:
file: ./postgres_password.txt # put postgresql password in this file
postgres_user:
file: ./postgres_user.txt # put postgresql username in this file
感谢帮助!
本文作者: yiyun
本文链接: https://moeci.com/posts/分类-docker/docker-cloudreve/
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!