使用 Docker 安装 您所在的位置:网站首页 docker容器更新时数据不见了 使用 Docker 安装

使用 Docker 安装

#使用 Docker 安装| 来源: 网络整理| 查看: 265

使用 Docker 安装#

With dockerized Weblate deployment you can get your personal Weblate instance up and running in seconds. All of Weblate’s dependencies are already included. PostgreSQL is set up as the default database and Redis as a caching backend.

硬件要求#

Weblate 应该可以在任何现代硬件上正常运行,以下是在单个主机(Weblate、数据库和 Web 服务器)上运行 Weblate 所需的最低配置:

3 GB 的内存

2 个 CPU 核心

1 GB 的存储空间

内存越多越好——用于所有级别的缓存(文件系统,数据库和 Weblate )。

许多并发用户会增加所需的 CPU 内核数量。对于数百个翻译部件,推荐至少有 4 GB 的内存。

典型的数据库存储用量大约为每 1 百万单词 300 MB。克隆仓库所需的存储空间会变化,但 Weblate 试图通过浅克隆将其大小最小化。

备注

安装 Weblate 的实际要求会因其中管理的翻译规模而大不相同。

提示

对于内存低于推荐值的系统,建议使用 单进程 Celery 设置。

安装#

提示

以下示例假设您拥有一个工作正常的 Docker 环境,并安装了 docker-compose-plugin。请查看 Docker 文档以获取说明。

这会通过 HTTP 创建一个 Weblate 部署服务器,你应将它置于 HTTPS 终止代理之后。你也可以用 HTTPS 代理进行部署,参见 使用 Let’s Encrypt 自动生成 SSL 证书。 对于更大型的安装设置,请见 横向扩展。

克隆 weblate-docker 仓库:

git clone https://github.com/WeblateOrg/docker-compose.git weblate-docker cd weblate-docker

使用您的设置创建一个 docker-compose.override.yml 文件。请参阅 Docker 环境变量 以获取环境变量的完整列表。

version: '3' services: weblate: ports: - 80:8080 environment: WEBLATE_EMAIL_HOST: smtp.example.com WEBLATE_EMAIL_HOST_USER: user WEBLATE_EMAIL_HOST_PASSWORD: pass WEBLATE_SERVER_EMAIL: [email protected] WEBLATE_DEFAULT_FROM_EMAIL: [email protected] WEBLATE_SITE_DOMAIN: weblate.example.com WEBLATE_ADMIN_PASSWORD: password for the admin user WEBLATE_ADMIN_EMAIL: [email protected]

备注

如果未设置 WEBLATE_ADMIN_PASSWORD,则使用首次启动时显示的随机密码创建管理员用户。

提供的示例使 Weblate 侦听端口 80,在 docker-compose.override.yml 文件中编辑端口映射来更改。

启动 Weblate 容器:

docker compose up

享受您的 Weblate 部署,可以在 weblate 容器的端口 80 上进行访问。

参见

调用管理命令

选择 Docker 镜像 registry#

Weblate 容器发布到下列镜像库:

Docker Hub,见 https://hub.docker.com/r/weblate/weblate

GitHub Packages 镜像库,见 https://github.com/WeblateOrg/docker/pkgs/container/weblate

备注

所有示例目前从 Docker Hub 获取镜像,请相应调整配置来使用另一个镜像库。

选择 Docker 镜像标签#

请选择匹配你的环境和预期的标签:

标签名称

说明

用例

latest

与最新的标签版本相匹配的Weblate 稳定发行版

在生产环境中滚动更新

Weblate 稳定发行版

生产环境下大版本内的滚动更新

.

Weblate 稳定发行版

生产环境下小版本内的滚动更新

.

Weblate 稳定发行版

生产环境下定义良好的部署

edge

Weblate稳定发行版在Docker容器中的开发变化(例如依赖的更新)

在准生产环境中进行滚动更新

edge--

Weblate稳定发行版在Docker容器中的开发变化(例如依赖的更新)

在准生产环境中定义完善部署

bleeding

来自Git的Weblate开发版

滚动更新以测试即将推出的 Weblate 功能

bleeding--

来自Git的Weblate开发版

定义明确的部署以测试即将推出的 Weblate 功能

每个镜像在发布之前都经过我们的 CI 测试,所以即使是 bleeding 版本也应该可以安全使用。

可以在 GitHub Packages 找到的已发布标签的完整列表

具有 HTTPS 支持的 Docker 容器#

请参阅 安装 以获取常规部署说明,本节仅提及与之相比的差异。

使用自己的 SSL 证书#

如果您要使用自己的 SSL 证书,只需将文件放入 Weblate 数据卷中(请参阅 Docker 容器卷):

ssl/fullchain.pem 包含证书,包括任何需要的 CA 证书

ssl/privkey.pem 包含有私钥

拥有这两个文件的用户必须与启动 docker 容器并将文件掩码设置为 600 (仅拥有用户可读可写)的用户为同一用户。

此外,Weblate 容器现在将在端口 4443 上接受 SSL 连接,您将要在 docker compose override 中包括 HTTPS 的端口转发:

version: '3' services: weblate: ports: - 80:8080 - 443:4443

如果您已经在同一服务器上托管其他站点,则反向代理(例如 NGINX )可能会使用端口 80 和 443。要将 HTTPS 连接从 NGINX 传递到 docker 容器,可以使用以下配置:

server { listen 443 ssl; listen [::]:443 ssl; server_name ; ssl_certificate /etc/letsencrypt/live//fullchain.pem; ssl_certificate_key /etc/letsencrypt/live//privkey.pem; location / { proxy_set_header HOST $host; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_pass https://127.0.0.1:; } }

将 , 和 替换为您环境中的实际值。

使用 Let’s Encrypt 自动生成 SSL 证书#

如果要在公共安装中使用 Let’s Encrypt 自动生成的 SSL 证书,则需要在其他 Docker 容器中添加反向 HTTPS 代理,这将使用 https-portal。这是在 docker-compose-https.yml 文件中使用的。然后使用您的设置创建一个 docker-compose-https.override.yml 文件:

version: '3' services: weblate: environment: WEBLATE_EMAIL_HOST: smtp.example.com WEBLATE_EMAIL_HOST_USER: user WEBLATE_EMAIL_HOST_PASSWORD: pass WEBLATE_SITE_DOMAIN: weblate.example.com WEBLATE_ADMIN_PASSWORD: password for admin user https-portal: environment: DOMAINS: 'weblate.example.com -> http://weblate:8080'

每当调用 docker compose 时,您都需要将两个文件都传递给它,然后执行以下操作:

docker compose -f docker-compose-https.yml -f docker-compose-https.override.yml build docker compose -f docker-compose-https.yml -f docker-compose-https.override.yml up 升级 Docker 容器#

通常,只更新 Weblate 容器并保持 PostgreSQL 容器为您的版本是一个好主意,因为升级 PostgreSQL 会很痛苦,并且在大多数情况下不会带来很多好处。

在 4.17-1 版本发生变更: 从 Weblate 4.17-1 开始,Docker 容器使用需要 PostgreSQL 12 或更高版本的 Django 4.2,请在升级 Weblate 之前对其进行升级。参见 升级 PostgreSQL 容器。

您可以通过坚持使用现有的 docker-compose,并且只是拉取最新镜像,然后重新启动,来执行此操作:

# Fetch latest versions of the images docker compose pull # Stop and destroy the containers docker compose down # Spawn new containers in the background docker compose up -d # Follow the logs during upgrade docker compose logs -f

Weblate 数据库应在首次启动时自动迁移,并且不需要其他手动操作。

备注

Weblate 不支持跨大版本升级。比如,如果您使用的是 3.x 系列,要升级到 4.x,请首先升级到最新的 4.0.x-y 镜像(在撰写本文时为 4.0.4-5),它将进行迁移和然后继续升级到较新版本。

您可能还想更新 docker-compose 仓库,尽管在大多数情况下并不需要。在这种情况下,升级 PostgreSQL 服务器的信息,见 升级 PostgreSQL 容器。

升级 PostgreSQL 容器#

PostgreSQL 容器不支持版本间自动升级,需要手动升级。以下步骤显示了升级选项之一。

参见

https://github.com/docker-library/postgres/issues/37

停止 Weblate 容器:

docker compose stop weblate cache

备份数据库:

docker compose exec database pg_dumpall --clean --if-exists --username weblate > backup.sql

停止数据库容器:

docker compose stop database

删除 PostgreSQL 卷:

docker compose rm -v database docker volume remove weblate-docker_postgres-data

提示

卷名包含 Docker Compose 项目名,其默认为此文档中 weblate-docker 的目录名。

调整 :file:`docker-compose.yml`以使用新的 PostgreSQL 版本。

启动数据库容器:

docker compose up -d database

从备份恢复数据库:

cat backup.sql | docker compose exec -T database psql --username weblate --dbname weblate

提示

请检查数据库名称匹配 POSTGRES_DATABASE。

(可选)更新 Weblate 用户的密码。迁移到 PostgreSQL 14 或 15 时可能需要这么做,因为密码存储方式发生了改变:

docker compose exec -T database psql --username weblate --dbname weblate -c "ALTER USER weblate WITH PASSWORD 'weblate'"

提示

请检查数据库名称匹配 POSTGRES_DATABASE。

启动所有剩余的容器:

docker compose up -d 管理员登录#

设置容器之后,您可以使用 WEBLATE_ADMIN_PASSWORD 中提供的密码以 管理员 用户身份登录,或者如果未设置该密码,则在首次启动时生成随机密码。

要重置 管理员 密码,请在 WEBLATE_ADMIN_PASSWORD 设置为新密码的情况下重启容器。

参见

WEBLATE_ADMIN_PASSWORD, WEBLATE_ADMIN_NAME, WEBLATE_ADMIN_EMAIL

进程数量和内存消耗#

uWSGI 和 Celery 的工作进程数是根据 CPU 的数量自动确定的。这适用于大多数云虚拟机,因为这些虚拟机通常具有很少的CPU和大量的内存。

在你有很多 CPU 核心并且碰到内存用尽问题情况下,尝试减少 工作进程的数量:

environment: WEBLATE_WORKERS: 2

你还可以微调单个 工作进程类别:

environment: WEB_WORKERS: 4 CELERY_MAIN_OPTIONS: --concurrency 2 CELERY_NOTIFY_OPTIONS: --concurrency 1 CELERY_TRANSLATE_OPTIONS: --concurrency 1

参见

WEBLATE_WORKERS CELERY_MAIN_OPTIONS, CELERY_NOTIFY_OPTIONS, CELERY_MEMORY_OPTIONS, CELERY_TRANSLATE_OPTIONS, CELERY_BACKUP_OPTIONS, CELERY_BEAT_OPTIONS, WEB_WORKERS

横向扩展#

在 4.6 版本加入.

您可以运行多个 Weblate 容器来水平扩展服务。/app/data 卷必须由所有容器共享,建议使用集群文件系统,如 GlusterFS。对于每个容器,:file:`/app/cache`卷应该是分开的。

每个 Weblate 容器都使用 WEBLATE_SERVICE 环境变量定义了角色。请仔细阅读文档,因为某些服务应该在集群中只运行一次,并且服务的顺序也很重要。

您可以在 docker-compose 仓库中找到示例设置,如 docker-compose-split.yml。

Docker 环境变量#

可以使用下述环境变量在 Docker 容器中设置 Weblate 的许多 配置。

如果您需要定义不通过 Docker 环境变量公开的设置,请参考 修改未暴露为 Docker 环境变量的设置项。

传递 secrets#

在 5.0 版本加入.

Weblate 容器支持将 secrets 作为文件进行传递。要实现它,请将 _FILE` 后缀附加到环境变量并通过 Docker 传递 secret 文件。

相关的 :file:`docker-compose.yml`看上去可能是这样:

services: weblate: environment: POSTGRES_PASSWORD_FILE: /run/secrets/db_password secrets: - db_password database: environment: POSTGRES_PASSWORD_FILE: /run/secrets/db_password secrets: - db_password secrets: db_password: file: db_password.txt

参见

How to use secrets in Docker Compose

通用设置# WEBLATE_DEBUG#

使用 DEBUG 配置 Django 调试模式。

示例:

environment: WEBLATE_DEBUG: 1

参见

禁止调试模式

WEBLATE_LOGLEVEL#

配置日志记录详细程度,将此设为 DEBUG 来获得更详细的日志。

WEBLATE_DEBUG 关闭时,默认为 INFO,开启调试模式时也会使用 DEBUG 级别。

要静默记录更多的错误,请使用 ERROR 或 WARNING 级别。

WEBLATE_LOGLEVEL_DATABASE#

配置数据库查询详细程度的日志记录。

WEBLATE_SITE_TITLE#

更改所有页面页眉上显示的站点标题。

WEBLATE_SITE_DOMAIN#

配置站点域名。此参数为必填项。

参见

设置正确的网站域名, SITE_DOMAIN

WEBLATE_ADMIN_NAME# WEBLATE_ADMIN_EMAIL#

配置站点管理员的姓名和电子邮件。它用于 ADMINS 设置和创建 管理员 用户(有关此信息,请参阅 WEBLATE_ADMIN_PASSWORD)。

示例:

environment: WEBLATE_ADMIN_NAME: Weblate admin WEBLATE_ADMIN_EMAIL: [email protected]

参见

管理员登录, 是当地配置管理设置, ADMINS

WEBLATE_ADMIN_PASSWORD#

设置 管理员 用户的密码。

如果未设置并且 管理员 用户不存在,则会使用首次启动容器时显示的随机密码来创建它。

如果未设置并且 管理员 用户存在,则不执行任何操作。

如果设置,则在每次容器启动时都会对 管理员 用户进行调整,以匹配 WEBLATE_ADMIN_PASSWORD,WEBLATE_ADMIN_NAME 和 WEBLATE_ADMIN_EMAIL。

警告

将密码存储在配置文件中可能会带来安全风险。考虑仅将此变量用于初始设置(或让 Weblate 在初始启动时生成随机密码)或用于密码恢复。

参见

管理员登录, 传递 secrets, WEBLATE_ADMIN_PASSWORD, WEBLATE_ADMIN_NAME, WEBLATE_ADMIN_EMAIL

WEBLATE_SERVER_EMAIL#

发送错误消息的电子邮箱地址。

参见

SERVER_EMAIL, 配置电子邮件发送的设置

WEBLATE_DEFAULT_FROM_EMAIL#

配置外发电子邮件的地址。

参见

DEFAULT_FROM_EMAIL, 配置电子邮件发送的设置

WEBLATE_ADMINS_CONTACT#

Configures ADMINS_CONTACT.

WEBLATE_CONTACT_FORM#

配置联系表单行为,请参阅 CONTACT_FORM。

WEBLATE_ALLOWED_HOSTS#

使用 ALLOWED_HOSTS 配置允许的 HTTP 主机名。

默认为 * 来允许所有的主机名称。

示例:

environment: WEBLATE_ALLOWED_HOSTS: weblate.example.com,example.com

参见

ALLOWED_HOSTS, 允许主机设置, 设置正确的网站域名

WEBLATE_REGISTRATION_OPEN#

通过切换 REGISTRATION_OPEN 配置是否打开注册。

示例:

environment: WEBLATE_REGISTRATION_OPEN: 0 WEBLATE_REGISTRATION_ALLOW_BACKENDS#

配置可用于通过 REGISTRATION_ALLOW_BACKENDS 创建新账户的身份验证方法。

示例:

environment: WEBLATE_REGISTRATION_OPEN: 0 WEBLATE_REGISTRATION_ALLOW_BACKENDS: azuread-oauth2,azuread-tenant-oauth2 WEBLATE_REGISTRATION_REBIND#

在 4.16 版本加入.

配置 REGISTRATION_REBIND.

WEBLATE_TIME_ZONE#

在 Weblate 中配置使用的时区,请参阅 TIME_ZONE。

备注

为了更改 Docker 自己的时区,使用 TZ 环境变量。

示例:

environment: WEBLATE_TIME_ZONE: Europe/Prague WEBLATE_ENABLE_HTTPS#

让 Weblate 假定在反向 HTTPS 代理后面操作,这使 Weblate 在电子邮件和 API 链接中使用 HTTPS,或者在 cookies 上设置安全标记。

提示

可能的警告请参见 ENABLE_HTTPS 文档。

备注

这不会使 Weblate 容器接受 HTTPS 连接,您同样需要配置它,示例请参见 具有 HTTPS 支持的 Docker 容器。

示例:

environment: WEBLATE_ENABLE_HTTPS: 1

参见

ENABLE_HTTPS 设置正确的网站域名, WEBLATE_SECURE_PROXY_SSL_HEADER

WEBLATE_INTERLEDGER_PAYMENT_POINTERS#

在 4.12.1 版本加入.

让 Weblate 在文档的头部设置 meta[name=monetization] 字段。如果指定了多个,则随机选择一个。

参见

INTERLEDGER_PAYMENT_POINTERS

WEBLATE_IP_PROXY_HEADER#

让 Weblate 从任何给定的 HTTP 标头中取回 IP 地址。在使用 Weblate 容器之前的反向代理时使用它。

允许 IP_BEHIND_REVERSE_PROXY 并设置 IP_PROXY_HEADER。

备注

格式必须符合 Django 的要求。Django transforms 原始 HTTP 标头如下命名:

将所有字符装换为大写

用下划线替换任何连字符

预置 HTTP_ 前缀

所以 X-Forwarded-For 将被映射到 HTTP_X_FORWARDED_FOR。

示例:

environment: WEBLATE_IP_PROXY_HEADER: HTTP_X_FORWARDED_FOR WEBLATE_IP_PROXY_OFFSET#

在 5.0.1 版本加入.

配置 IP_PROXY_OFFSET。

WEBLATE_USE_X_FORWARDED_PORT#

在 5.0.1 版本加入.

布尔值,用于明确是否在选项中对 SERVER_PORT META 变量使用 X-Forwarded-Port 标头。除非使用设置了此标头的代理,否则你不应该启用它。

参见

USE_X_FORWARDED_PORT

备注

这是一个布尔值设定(使用 "true" 或者 "false")。

WEBLATE_SECURE_PROXY_SSL_HEADER#

代表 HTTP 标头/值的组合的元组,用于表达请求,这样的元组是安全的。当 Weblate 在进行终止SSL 的反向代理之后运行时,这是需要的,终止 SSL 不通过标准 HTTPS 标头。

示例:

environment: WEBLATE_SECURE_PROXY_SSL_HEADER: HTTP_X_FORWARDED_PROTO,https

参见

SECURE_PROXY_SSL_HEADER

WEBLATE_REQUIRE_LOGIN#

启用 REQUIRE_LOGIN 而在整个 Weblate 上强制认证。

示例:

environment: WEBLATE_REQUIRE_LOGIN: 1 WEBLATE_LOGIN_REQUIRED_URLS_EXCEPTIONS# WEBLATE_ADD_LOGIN_REQUIRED_URLS_EXCEPTIONS# WEBLATE_REMOVE_LOGIN_REQUIRED_URLS_EXCEPTIONS#

使用 LOGIN_REQUIRED_URLS_EXCEPTIONS 来为整个 Weblate 安装所需的身份验证添加 URL 例外。

可以替换整个设置,或者使用 ADD 和 REMOVE 变量修改默认值。

对联系表单强制使用身份验证的方法:

environment: WEBLATE_REMOVE_LOGIN_REQUIRED_URLS_EXCEPTIONS: /contact/$ WEBLATE_GOOGLE_ANALYTICS_ID#

通过更改 GOOGLE_ANALYTICS_ID 来配置 Google Analytics 的 ID。

WEBLATE_DEFAULT_PULL_MESSAGE#

通过更改 DEFAULT_PULL_MESSAGE 来配置使用 API 发起的拉取请求的默认标题和说明

参见

DEFAULT_PULL_MESSAGE

WEBLATE_SIMPLIFY_LANGUAGES#

配置语言简化策略,请参见 SIMPLIFY_LANGUAGES。

WEBLATE_DEFAULT_ACCESS_CONTROL#

为新项目配置默认的 访问控制,请参见 DEFAULT_ACCESS_CONTROL。

WEBLATE_DEFAULT_RESTRICTED_COMPONENT#

为新部件的 受限制的访问 配置默认值,请参见 DEFAULT_RESTRICTED_COMPONENT。

WEBLATE_DEFAULT_TRANSLATION_PROPAGATION#

为新部件的 允许同步翻译 配置默认值,请参见 DEFAULT_TRANSLATION_PROPAGATION。

WEBLATE_DEFAULT_COMMITER_EMAIL#

配置 DEFAULT_COMMITER_EMAIL。

WEBLATE_DEFAULT_COMMITER_NAME#

配置 DEFAULT_COMMITER_NAME。

WEBLATE_DEFAULT_SHARED_TM#

配置 DEFAULT_SHARED_TM.

WEBLATE_AKISMET_API_KEY#

配置 Akismet API 密钥,请参见 AKISMET_API_KEY。

WEBLATE_GPG_IDENTITY#

配置提交的 GPG 签名,请参见 WEBLATE_GPG_IDENTITY。

参见

使用 GnuPG 为 Git 提交签名

WEBLATE_URL_PREFIX#

配置 Weblate 运行的 URL 前缀,请参见 URL_PREFIX。

WEBLATE_SILENCED_SYSTEM_CHECKS#

配置您不想要显示的检查,请参见 SILENCED_SYSTEM_CHECKS。

WEBLATE_CSP_SCRIPT_SRC# WEBLATE_CSP_IMG_SRC# WEBLATE_CSP_CONNECT_SRC# WEBLATE_CSP_STYLE_SRC# WEBLATE_CSP_FONT_SRC#

允许定制 Content-Security-Policy HTTP 标头。

参见

内容安全政策, CSP_SCRIPT_SRC, CSP_IMG_SRC, CSP_CONNECT_SRC, CSP_STYLE_SRC, CSP_FONT_SRC

WEBLATE_LICENSE_FILTER#

配置 LICENSE_FILTER.

WEBLATE_LICENSE_REQUIRED#

配置 LICENSE_REQUIRED

WEBLATE_WEBSITE_REQUIRED#

配置 WEBSITE_REQUIRED

WEBLATE_HIDE_VERSION#

配置 HIDE_VERSION。

WEBLATE_BASIC_LANGUAGES#

配置 BASIC_LANGUAGES.

WEBLATE_DEFAULT_AUTO_WATCH#

配置 DEFAULT_AUTO_WATCH.

WEBLATE_RATELIMIT_ATTEMPTS# WEBLATE_RATELIMIT_LOCKOUT# WEBLATE_RATELIMIT_WINDOW#

在 4.6 版本加入.

配置速率限制器。

提示

你可以为任何速率限制器的范围设置配置。要做到这一点,请在 :ref:`rate-limit’中描述的任何设置中添加`WEBLATE_`前缀。

参见

频次限制, RATELIMIT_ATTEMPTS, RATELIMIT_WINDOW, RATELIMIT_LOCKOUT

WEBLATE_API_RATELIMIT_ANON# WEBLATE_API_RATELIMIT_USER#

在 4.11 版本加入.

配置 API 速率限制。默认值如下:匿名用户 100/day,已验证身份用户 ``5000/hour`。

参见

API 频次限制

WEBLATE_ENABLE_HOOKS#

在 4.13 版本加入.

配置 ENABLE_HOOKS。

WEBLATE_ENABLE_AVATARS#

在 4.6.1 版本加入.

配置 ENABLE_AVATARS.

WEBLATE_AVATAR_URL_PREFIX#

在 4.15 版本加入.

配置 AVATAR_URL_PREFIX。

WEBLATE_LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH#

在 4.9 版本加入.

配置 LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH.

WEBLATE_SSH_EXTRA_ARGS#

在 4.9 版本加入.

配置 SSH_EXTRA_ARGS。

WEBLATE_BORG_EXTRA_ARGS#

在 4.9 版本加入.

配置 BORG_EXTRA_ARGS ,其为英文逗号所分隔的参数列表。

示例:

environment: WEBLATE_BORG_EXTRA_ARGS: --exclude,vcs/ WEBLATE_ENABLE_SHARING#

在 4.14.1 版本加入.

配置 ENABLE_SHARING.

WEBLATE_EXTRA_HTML_HEAD#

在 4.15 版本加入.

配置 EXTRA_HTML_HEAD.

WEBLATE_PRIVATE_COMMIT_EMAIL_TEMPLATE#

在 4.15 版本加入.

配置 PRIVATE_COMMIT_EMAIL_TEMPLATE.

WEBLATE_PRIVATE_COMMIT_EMAIL_OPT_IN#

在 4.15 版本加入.

配置 PRIVATE_COMMIT_EMAIL_OPT_IN.

WEBLATE_UNUSED_ALERT_DAYS#

在 4.17 版本加入.

配置 UNUSED_ALERT_DAYS.

WEBLATE_CORS_ALLOWED_ORIGINS#

在 4.16 版本加入.

允许来自给定源的 CORS 请求。

示例:

environment: WEBLATE_CORS_ALLOWED_ORIGINS: https://example.com,https://weblate.org CLIENT_MAX_BODY_SIZE#

在 4.16.3 版本加入.

配置内置 web 服务器接受的最大正文大小。

environment: CLIENT_MAX_BODY_SIZE: 200m

提示

此变量刻意缺少 WEBLATE_ 前缀,因它和 使用 Let’s Encrypt 自动生成 SSL 证书 中所用的第三方容器共享。

代码托管站点凭据#

在 Docker 容器中,要配置代码托管凭据,可以用单独变量或用 Python 词典一下子进行设置。 下列示例针对 GitHub 拉取请求,但适用于所有带恰当更改的变量名的 版本控制集成。

GitHub 的配置示例看上去像是这样:

WEBLATE_GITHUB_USERNAME=api-user WEBLATE_GITHUB_TOKEN=api-token WEBLATE_GITHUB_HOST=api.github.com

将用作:

GITHUB_CREDENTIALS = { "api.github.com": { "username": "api-user", "token": "api-token", } }

此外,也可以将 Python 字典作为一条字符串提供:

WEBLATE_GITHUB_CREDENTIALS='{ "api.github.com": { "username": "api-user", "token": "api-token", } }'

或者到包含该 Python 字典的文件的路径:

echo '{ "api.github.com": { "username": "api-user", "token": "api-token", } }' > /path/to/github-credentials WEBLATE_GITHUB_CREDENTIALS_FILE='/path/to/github-credentials' WEBLATE_GITHUB_USERNAME# WEBLATE_GITHUB_TOKEN# WEBLATE_GITHUB_HOST# WEBLATE_GITHUB_CREDENTIALS#

配置 GitHub 拉取请求 ,方法是更改 GITHUB_CREDENTIALS。

参见

在 Docker 中配置代码托管凭据

WEBLATE_GITLAB_USERNAME# WEBLATE_GITLAB_TOKEN# WEBLATE_GITLAB_HOST# WEBLATE_GITLAB_CREDENTIALS#

配置 GitLab 合并请求 ,方法是更改 GITLAB_CREDENTIALS。

参见

在 Docker 中配置代码托管凭据

WEBLATE_GITEA_USERNAME# WEBLATE_GITEA_TOKEN# WEBLATE_GITEA_HOST# WEBLATE_GITEA_CREDENTIALS#

配置 Gitea 拉取请求 ,方法是更改 GITEA_CREDENTIALS。

参见

在 Docker 中配置代码托管凭据

WEBLATE_PAGURE_USERNAME# WEBLATE_PAGURE_TOKEN# WEBLATE_PAGURE_HOST# WEBLATE_PAGURE_CREDENTIALS#

配置 Pagure 合并请求 ,方法是更改 PAGURE_CREDENTIALS。

参见

在 Docker 中配置代码托管凭据

WEBLATE_BITBUCKETSERVER_USERNAME# WEBLATE_BITBUCKETSERVER_TOKEN# WEBLATE_BITBUCKETSERVER_HOST# WEBLATE_BITBUCKETSERVER_CREDENTIALS#

配置 Bitbucket 服务器拉取请求,方法是更改 BITBUCKETSERVER_CREDENTIALS。

参见

在 Docker 中配置代码托管凭据

WEBLATE_AZURE_DEVOPS_USERNAME# WEBLATE_AZURE_DEVOPS_ORGANIZATION# WEBLATE_AZURE_DEVOPS_TOKEN# WEBLATE_AZURE_DEVOPS_HOST# WEBLATE_AZURE_DEVOPS_CREDENTIALS#

配置 Azure DevOps 拉取请求,方法是更改 AZURE_DEVOPS_CREDENTIALS。

参见

在 Docker 中配置代码托管凭据

自动建议设置#

在 4.13 版本发生变更: 自动建议服务现在在用户界面进行配置,见 配置自动建议。

现有的环境变量在迁移到Weblate 4.13时被导入,但改变它们不会有任何进一步的影响。

身份验证设置# LDAP# WEBLATE_AUTH_LDAP_SERVER_URI# WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE# WEBLATE_AUTH_LDAP_USER_ATTR_MAP# WEBLATE_AUTH_LDAP_BIND_DN# WEBLATE_AUTH_LDAP_BIND_PASSWORD# WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS# WEBLATE_AUTH_LDAP_USER_SEARCH# WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER# WEBLATE_AUTH_LDAP_USER_SEARCH_UNION# WEBLATE_AUTH_LDAP_USER_SEARCH_UNION_DELIMITER#

LDAP 身份验证配置。

直接绑定的示例:

environment: WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE: uid=%(user)s,ou=People,dc=example,dc=net # map weblate 'full_name' to ldap 'name' and weblate 'email' attribute to 'mail' ldap attribute. # another example that can be used with OpenLDAP: 'full_name:cn,email:mail' WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail

搜索与绑定的示例:

environment: WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org WEBLATE_AUTH_LDAP_BIND_DN: CN=ldap,CN=Users,DC=example,DC=com WEBLATE_AUTH_LDAP_BIND_PASSWORD: password WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail WEBLATE_AUTH_LDAP_USER_SEARCH: CN=Users,DC=example,DC=com

联合搜索与绑定的示例:

environment: WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org WEBLATE_AUTH_LDAP_BIND_DN: CN=ldap,CN=Users,DC=example,DC=com WEBLATE_AUTH_LDAP_BIND_PASSWORD: password WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail WEBLATE_AUTH_LDAP_USER_SEARCH_UNION: ou=users,dc=example,dc=com|ou=otherusers,dc=example,dc=com

针对 Active Directory 的搜索与绑定的示例:

environment: WEBLATE_AUTH_LDAP_BIND_DN: CN=ldap,CN=Users,DC=example,DC=com WEBLATE_AUTH_LDAP_BIND_PASSWORD: password WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS: 0 WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail WEBLATE_AUTH_LDAP_USER_SEARCH: CN=Users,DC=example,DC=com WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER: (sAMAccountName=%(user)s)

参见

传递 secrets, LDAP 身份验证

GitHub# WEBLATE_SOCIAL_AUTH_GITHUB_KEY# WEBLATE_SOCIAL_AUTH_GITHUB_SECRET# WEBLATE_SOCIAL_AUTH_GITHUB_ORG_KEY# WEBLATE_SOCIAL_AUTH_GITHUB_ORG_SECRET# WEBLATE_SOCIAL_AUTH_GITHUB_ORG_NAME# WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_KEY# WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_SECRET# WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_ID#

允许 GitHub 身份验证。

GitHub 企业版# WEBLATE_SOCIAL_AUTH_GITHUB_ENTERPRISE_KEY# WEBLATE_SOCIAL_AUTH_GITHUB_ENTERPRISE_SECRET# WEBLATE_SOCIAL_AUTH_GITHUB_ENTERPRISE_URL# WEBLATE_SOCIAL_AUTH_GITHUB_ENTERPRISE_API_URL# WEBLATE_SOCIAL_AUTH_GITHUB_ENTERPRISE_SCOPE#

启用 GitHub 企业身份验证.

Bitbucket# WEBLATE_SOCIAL_AUTH_BITBUCKET_OAUTH2_KEY# WEBLATE_SOCIAL_AUTH_BITBUCKET_OAUTH2_SECRET# WEBLATE_SOCIAL_AUTH_BITBUCKET_KEY# WEBLATE_SOCIAL_AUTH_BITBUCKET_SECRET#

允许 Bitbucket 身份验证。

Facebook# WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY# WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET#

允许 Facebook OAuth 2.

Google# WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_KEY# WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET# WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS# WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS#

允许 Google OAuth 2。

GitLab# WEBLATE_SOCIAL_AUTH_GITLAB_KEY# WEBLATE_SOCIAL_AUTH_GITLAB_SECRET# WEBLATE_SOCIAL_AUTH_GITLAB_API_URL#

允许 GitLab OAuth 2。

Gitea# WEBLATE_SOCIAL_AUTH_GITEA_API_URL# WEBLATE_SOCIAL_AUTH_GITEA_KEY# WEBLATE_SOCIAL_AUTH_GITEA_SECRET#

启用 Gitea 身份验证。

Azure Active Directory# WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY# WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET#

启用 Azure Active Directory 身份验证,请参见 Microsoft Azure Active Directory。

支持 Azure Active Directory 租户# WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY# WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET# WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID#

启用支持 Azure Active Directory 租户的身份验证,请参见 Microsoft Azure Active Directory。

Keycloak# WEBLATE_SOCIAL_AUTH_KEYCLOAK_KEY# WEBLATE_SOCIAL_AUTH_KEYCLOAK_SECRET# WEBLATE_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY# WEBLATE_SOCIAL_AUTH_KEYCLOAK_ALGORITHM# WEBLATE_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL# WEBLATE_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL# WEBLATE_SOCIAL_AUTH_KEYCLOAK_TITLE# WEBLATE_SOCIAL_AUTH_KEYCLOAK_IMAGE#

允许 Keycloak 身份验证,请参见 documentation。

Linux 销售商#

您可以通过将后面的变量设置为任何值,使用 Linux 销售商身份验证服务来允许身份验证。

WEBLATE_SOCIAL_AUTH_FEDORA# WEBLATE_SOCIAL_AUTH_OPENSUSE# WEBLATE_SOCIAL_AUTH_OPENINFRA# WEBLATE_SOCIAL_AUTH_UBUNTU# Slack# WEBLATE_SOCIAL_AUTH_SLACK_KEY# SOCIAL_AUTH_SLACK_SECRET#

允许 Slack 身份验证,请参见 Slack。

OpenID 连接#

在 4.13-1 版本加入.

WEBLATE_SOCIAL_AUTH_OIDC_OIDC_ENDPOINT# WEBLATE_SOCIAL_AUTH_OIDC_KEY# WEBLATE_SOCIAL_AUTH_OIDC_SECRET# WEBLATE_SOCIAL_AUTH_OIDC_USERNAME_KEY#

配置通用 OpenID Connect 集成。

参见

OIDC (OpenID Connect)

SAML#

在第一次启动容器时会自动生成自签名的 SAML 密钥。如果您想要使用自己的密钥,请将证书和私钥分别放在 /app/data/ssl/saml.crt 和 /app/data/ssl/saml.key 中。

WEBLATE_SAML_IDP_ENTITY_ID# WEBLATE_SAML_IDP_URL# WEBLATE_SAML_IDP_X509CERT# WEBLATE_SAML_IDP_IMAGE# WEBLATE_SAML_IDP_TITLE#

SAML 身份提供者设置,请参见 SAML 身份验证。

WEBLATE_SAML_ID_ATTR_NAME# WEBLATE_SAML_ID_ATTR_USERNAME# WEBLATE_SAML_ID_ATTR_EMAIL# WEBLATE_SAML_ID_ATTR_USER_PERMANENT_ID#

在 4.18 版本加入.

SAML 属性映射。

其他身份认证设置# WEBLATE_NO_EMAIL_AUTH#

当设置为任何值时禁止电子邮箱身份认证。请参见 关闭密码身份验证。

PostgreSQL 数据库设置#

数据库由 docker-compose.yml 建立,所以这些设置影响 Weblate 和 PostgreSQL 容器。

参见

Weblate 的数据库设置

POSTGRES_PASSWORD#

PostgreSQL 密码。

参见

传递 secrets

POSTGRES_USER#

PostgreSQL 用户名。

POSTGRES_DATABASE#

PostgreSQL 数据库名。

POSTGRES_HOST#

PostgreSQL 服务器主机名成或 IP 地址。默认为 database。

POSTGRES_PORT#

PostgreSQL 服务器端口。默认为无(使用默认值)。

POSTGRES_SSL_MODE#

配置 PostgreSQL 如何处理 SSL 连接到服务器,可能的选项请参见 SSL Mode Descriptions

POSTGRES_ALTER_ROLE#

在迁移过程中配置要改变的角色名称,请参见 配置 Weblate 来使用 PostgreSQL。

POSTGRES_CONN_MAX_AGE#

在 4.8.1 版本加入.

数据库连接的寿命,以秒为单位的整数。使用0可以在每次请求结束时关闭数据库连接。

在 5.1 版本发生变更: 默认行为是拥有无限制的持久性数据库连接。

启用连接持久性通常会导致更多的数据库开放连接。请在启用前调整你的数据库配置。

配置的示例:

environment: POSTGRES_CONN_MAX_AGE: 3600

参见

CONN_MAX_AGE, Persistent connections

POSTGRES_DISABLE_SERVER_SIDE_CURSORS#

在 4.9.1 版本加入.

禁用数据库中的服务器端游标。这在一些:command:`pgbouncer`设置中是必要的。

配置的示例:

environment: POSTGRES_DISABLE_SERVER_SIDE_CURSORS: 1

参见

DISABLE_SERVER_SIDE_CURSORS, Transaction pooling and server-side cursors

WEBLATE_DATABASES#

在 5.1 版本加入.

设为 false 禁用基础数据库连接配置的环境。使用 e :ref:`docker-settings-override`手动配置数据库连接。

MySQL 或 MariaDB 服务器#

MySQL 和 MariaDB 均无法通过环境变量继续宁配置。见 :ref:`mysql`了解有关在 Weblate 中使用这些的信息。使用 :envvar:`WEBLATE_DATABASES`手动配置数据库连接。

数据库备份设置#

参见

下载的数据用于备份

WEBLATE_DATABASE_BACKUP#

使用 DATABASE_BACKUP 配置每日数据库转储。默认为 plain。

缓存服务器设置#

Weblate 强烈推荐使用 Redis,在 Docker 中运行 Weblate 时您必须提供 Redis 实例。

参见

允许缓存

REDIS_HOST#

Redis 服务器主机名称或 IP 地址。默认为 cache。

REDIS_PORT#

Redis 服务器端口。默认为 6379。

REDIS_DB#

Redis 数据库编号,默认为 1。

REDIS_PASSWORD#

Redis 服务器密码,默认不使用。

参见

传递 secrets

REDIS_TLS#

允许使用 SSL 进行 Redis 连接。

REDIS_VERIFY_SSL#

可以用于禁止 Redis 连接的 SSL 身份认证。

电子邮件服务器设置#

要使外发电子邮件正常工作,您需要提供一个电子邮件服务器。

TLS 配置示例:

environment: WEBLATE_EMAIL_HOST: smtp.example.com WEBLATE_EMAIL_HOST_USER: user WEBLATE_EMAIL_HOST_PASSWORD: pass

SSL 配置的示例:

environment: WEBLATE_EMAIL_HOST: smtp.example.com WEBLATE_EMAIL_PORT: 465 WEBLATE_EMAIL_HOST_USER: user WEBLATE_EMAIL_HOST_PASSWORD: pass WEBLATE_EMAIL_USE_TLS: 0 WEBLATE_EMAIL_USE_SSL: 1

参见

配置电子邮件发件箱

WEBLATE_EMAIL_HOST#

电子邮件服务器主机名或 IP 地址。

参见

WEBLATE_EMAIL_PORT, WEBLATE_EMAIL_USE_SSL, WEBLATE_EMAIL_USE_TLS, EMAIL_HOST

WEBLATE_EMAIL_PORT#

电子邮件服务器端口,默认为 25。

参见

EMAIL_PORT

WEBLATE_EMAIL_HOST_USER#

电子邮件身份验证用户。

参见

EMAIL_HOST_USER

WEBLATE_EMAIL_HOST_PASSWORD#

电子邮件验证密码。

参见

传递 secrets, EMAIL_HOST_PASSWORD

WEBLATE_EMAIL_USE_SSL#

与 SMTP 服务器通信时是否使用隐式 TLS(安全)连接。在大多数电子邮件文档中,这种 TLS 连接类型称为 SSL。通常在端口 465 上使用。如果遇到问题,请参阅显式 TLS 设置 WEBLATE_EMAIL_USE_TLS。

在 4.11 版本发生变更: SSL/TLS支持是根据:envvar:`WEBLATE_EMAIL_PORT`自动启用的。

参见

WEBLATE_EMAIL_PORT, WEBLATE_EMAIL_USE_TLS, EMAIL_USE_SSL

WEBLATE_EMAIL_USE_TLS#

与 SMTP 服务器通讯时是否使用 TLS(安全)连接。这用于显式 TLS 连接,通常在端口 587 或 25 上。如果您遇到挂起的连接,请参见隐式 TLS 设置 WEBLATE_EMAIL_USE_SSL。

在 4.11 版本发生变更: SSL/TLS支持是根据:envvar:`WEBLATE_EMAIL_PORT`自动启用的。

参见

WEBLATE_EMAIL_PORT, WEBLATE_EMAIL_USE_SSL, EMAIL_USE_TLS

WEBLATE_EMAIL_BACKEND#

将 Django 后端配置为用于发送电子邮件。

参见

配置电子邮件发送的设置, EMAIL_BACKEND

WEBLATE_AUTO_UPDATE#

配置 Weblate 是否更新仓库以及如何更新。

参见

AUTO_UPDATE

备注

这是一个布尔值设定(使用 "true" 或者 "false")。

站点集成# WEBLATE_GET_HELP_URL#

配置 GET_HELP_URL.

WEBLATE_STATUS_URL#

配置 STATUS_URL.

WEBLATE_LEGAL_URL#

配置: setting:LEGAL_URL.

WEBLATE_PRIVACY_URL#

配置 PRIVACY_URL.

收集错误报告并监控性能#

推荐从安装中系统地收集错误,请参见 收集错误报告并监控性能。

要启用对 Rollbar 的支持,请进行以下设置:

ROLLBAR_KEY#

您的 Rollbar 发布服务器访问令牌。

ROLLBAR_ENVIRONMENT#

您的 Rollbar 环境,默认为 production。

要启用对 Sentry 的支持,请进行以下设置:

SENTRY_DSN#

你的 Sentry DSN,见 SENTRY_DSN.

SENTRY_ENVIRONMENT#

您的 Sentry 环境(可选)。默认为 WEBLATE_SITE_DOMAIN。

SENTRY_TRACES_SAMPLE_RATE#

配置性能监控采样率。设为 1 跟踪所有事件,0(默认值)禁用跟踪。

示例:

environment: SENTRY_TRACES_SAMPLE_RATE: 0.5

参见

Sentry 性能监控,

SENTRY_PROFILES_SAMPLE_RATE#

配置个人资料监控采样率。设为 1 跟踪所有事件,0(默认)禁用跟踪。

示例:

environment: SENTRY_PROFILES_SAMPLE_RATE: 0.5

参见

Sentry Profiling

SENTRY_SEND_PII#

配置 SENTRY_SEND_PII.

语言本地化内容分发网络# WEBLATE_LOCALIZE_CDN_URL# WEBLATE_LOCALIZE_CDN_PATH#

在 4.2.1 版本加入.

:ref:`addon-weblate.cdn.cdnjs`的配置。

WEBLATE_LOCALIZE_CDN_PATH 是容器内的路径。它应该存储在持久卷上,而不能存储在瞬态存储器中。

一种可能性是存储在 Weblate 数据目录中:

environment: WEBLATE_LOCALIZE_CDN_URL: https://cdn.example.com/ WEBLATE_LOCALIZE_CDN_PATH: /app/data/l10n-cdn

备注

您负责设置Weblate生成的文件的服务,它只在配置的位置存储文件。

参见

使用 Weblate CDN 翻译 HTML 和 JavaScript, LOCALIZE_CDN_URL, LOCALIZE_CDN_PATH

更改启用的 app、检查、附加组件或自动修复#

可以通过后面的变量来调整允许的检查、附加组件或自动修复的内建配置:

WEBLATE_ADD_APPS# WEBLATE_REMOVE_APPS# WEBLATE_ADD_CHECK# WEBLATE_REMOVE_CHECK# WEBLATE_ADD_AUTOFIX# WEBLATE_REMOVE_AUTOFIX# WEBLATE_ADD_ADDONS# WEBLATE_REMOVE_ADDONS#

示例:

environment: WEBLATE_REMOVE_AUTOFIX: weblate.trans.autofixes.whitespace.SameBookendingWhitespace WEBLATE_ADD_ADDONS: customize.addons.MyAddon,customize.addons.OtherAddon

参见

CHECK_LIST, AUTOFIX_LIST, WEBLATE_ADDONS, INSTALLED_APPS

容器设置# WEBLATE_WORKERS#

在 4.6.1 版本加入.

容器中运行的工作者进程的基本数量。如果没有设置,它将在容器启动时根据可用的CPU核数自动确定。

它被用来确定 CELERY_MAIN_OPTIONS, CELERY_NOTIFY_OPTIONS, CELERY_MEMORY_OPTIONS, : envvar:CELERY_TRANSLATE_OPTIONS, CELERY_BACKUP_OPTIONS, CELERY_BEAT_OPTIONS, 和 WEB_WORKERS。你可以使用这些设置来微调。

CELERY_MAIN_OPTIONS# CELERY_NOTIFY_OPTIONS# CELERY_MEMORY_OPTIONS# CELERY_TRANSLATE_OPTIONS# CELERY_BACKUP_OPTIONS# CELERY_BEAT_OPTIONS#

这些变量允许您调整 Celery 工作进程选项。它可以用于调整并发性( --concurrency 16 ),或使用不同的池实现( --pool=gevent )。

默认情况下,并发工作者的数量是基于 WEBLATE_WORKERS。

示例:

environment: CELERY_MAIN_OPTIONS: --concurrency 16

参见

Celery 工作进程选项, 使用 Celery 的后台任务

WEB_WORKERS#

配置应该执行多少个 uWSGI 工作进程。

它默认为 WEBLATE_WORKERS。

示例:

environment: WEB_WORKERS: 32 WEBLATE_SERVICE#

定义应在容器内执行哪些服务,使用对象 横向扩展。

定义了以下服务:

celery-beat

Celery任务调度器,应该只有一个实例在运行。这个容器也负责数据库结构的迁移,它应该在其他容器之前启动。

celery-backup

用于备份的 Celery 工作进程,应该只有一个实例在运行。

celery-celery

普通的 Celery 工作进程.

celery-memory

翻译记忆库 Celery 工作进程。

celery-notify

通知 Celery 工作进程。

celery-translate

自动翻译 Celery 工作进程。

web

Web 服务器。

Docker 容器卷#

Weblate 容器导出了两个卷 (数据和缓存)。其他服务容器(PostgreSQL 或 Redis)也具有其数据卷,但本文档未涵盖这些数据卷。

数据卷用于存储 Weblate 持久数据(例如克隆的仓库)或自定义 Weblate 安装。

Docker 卷在主机系统上的位置取决于您的 Docker 配置,但通常存储在 /var/lib/docker/volumes/weblate-docker_weblate-data/_data/ 中。(该路径由你的 docker-compose 目录的名称、容器和卷的名称组成)。在容器中,它挂载为 /app/data。

缓存卷被挂载为 /app/cache,用于存储静态文件和 CACHE_DIR 。它的内容在容器启动时被重新创建,卷可以使用短暂的文件系统(如 tmpfs )挂载。

当手动创建卷时,目录应该由UID 1000拥有,因为那是容器内使用的用户。

参见

Docker 卷文档

只读根文件系统#

在 4.18 版本加入.

运行只读根文件系统的容器时,需要两个额外的 tmpfs 卷 - /tmp 和 /run。

修改未暴露为 Docker 环境变量的设置项#

Docker 环境变量。

如果您发现没有作为环境变量公开的设置,并且您认为它应该公开,请随时 要求在未来版本的 Weblate 中公开它。

如果您需要修改未公开为 Docker 环境变量的设置,您仍然可以这样做 来自数据卷 或者 扩展 Docker 镜像。

参见

定制 Weblate

覆盖数据卷的设置#

您可以在 /app/data/settings-override.py 创建一个文件,即在 数据卷 的根目录,以扩展或覆盖通过环境变量定义的设置。

通过扩展 Docker 镜像覆盖设置#

要在 Docker 镜像级别而不是从数据卷覆盖设置:

创建自定义 Python 包。

将一个模块添加到您的包中,该模块从 weblate.settings_docker 导入所有设置。

例如,在 建立 Python 模块, weblate_customization/weblate_customization/settings.py 定义的示例包结构中,您可以使用以下初始代码创建一个文件 :

from weblate.settings_docker import *

创建一个继承自官方 Weblate Docker 镜像的自定义 Dockerfile,然后安装你的包并将 DJANGO_SETTINGS_MODULE 环境变量指向你的设置模块:

FROM weblate/weblate USER root COPY weblate_customization /usr/src/weblate_customization RUN pip install --no-cache-dir /usr/src/weblate_customization ENV DJANGO_SETTINGS_MODULE=weblate_customization.settings USER 1000

不要使用官方的 Weblate Docker 镜像,而是从这个 Dockerfile 文件构建一个自定义镜像。

使用 docker-compose.override.yml 则 无法干净地 做到这一点。您 可以 将 build: . 添加到该文件中的 weblate 节点,但随后您的自定义镜像将在系统中被打上 weblate/weblate 的标签,这可能会出问题。

因此,比起原封不动直接套用来自 官方仓库 的 docker-compose.yml,并通过 docker-compose.override.yml 进行扩展,你或许想要复制一份 docker-compose.yml 文件对其进行编辑,然后借助 build: . 用编辑后的文件替换 image: weblate/weblate.

有关使用 docker-compose 时从源代码构建镜像的详情请见 Compose file build reference.

扩展你的自定义设置模块来定义或重新定义设置。

你可以定义上方 import 语句之前或之后的设置,以确定哪些设置优先。import 语句之前定义的设置可以被环境变量和数据卷中定义的设置覆盖所覆盖。不能覆盖 import 语句后定义的设置。

你也可以更进一步。比如,你可以重现一些 weblate.docker_settings 所做的事 `__,如将设置暴露为环境变量,或允许在数据卷中覆盖来自 Python 文件的设置。

替换标志和其它静态文件#

Weblate 附带的静态文件可以通过放置到 /app/data/python/customize/static 中来覆盖(请参阅 Docker 容器卷)。例如,创建 /app/data/python/customize/static/favicon.ico 将替换 favicon。

提示

在容器启动时,这些文件被复制到相应的位置,因此需要在更改卷的内容后重新启动 Weblate。

这种方法也可以用来覆盖Weblate的模板。例如 legal`文件可以放在 :file:/app/data/python/customize/templates/legal/documents`里。

或者,您也可以包括自己的模块(请参阅 定制 Weblate),并将其作为单独的卷添加到 Docker 容器中,例如:

weblate: volumes: - weblate-data:/app/data - ./weblate_customization/weblate_customization:/app/data/python/weblate_customization environment: WEBLATE_ADD_APPS: weblate_customization 配置 PostgreSQL 服务器#

PostgreSQL容器使用默认的PostgreSQL配置,它不会有效地利用你的CPU核心或内存。建议自定义配置以提高性能。

配置可以按照https://hub.docker.com/_/postgres “数据库配置 “中的描述来调整。匹配你的环境的配置可以使用https://pgtune.leopard.in.ua/。

容器内部构件#

容器在使用 supervisor`来启动单独服务。遇到 :ref:`docker-scaling,它只在容器中启动一个服务。

要检查服务状态,请使用:

docker compose exec --user weblate weblate supervisorctl status

每个 Celery 队列有单独服务(详见 使用 Celery 的后台任务)。你可以停止相应的 工作进程来停止处理某些任务:

docker compose exec --user weblate weblate supervisorctl stop celery-translate


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有