如何修复 docker compose up 的错误

问题描述 投票:0回答:1

我目前正在尝试设置 Pterodactyl

这是我的 docker-compose.yml `版本:“3.8”

本节声明了所有容器的基本配置

下面声明为“服务”

x-常见: 数据库: &db-环境 # 你不需要改变这些,因为它不会暴露给公众。 MYSQL_PASSWORD: &db 密码“CHANGE_ME” MYSQL_ROOT_PASSWORD:“CHANGE_ME_TOO” 控制板: 面板环境(&P) #这是您的面板在反向代理后所在的 URL。 # 将其设置为“https://yoursubdomain.yourdomain.yourdomainstld” APP_URL:“https://subdomain.domain.tld” # 可以在这里找到有效时区的列表: # http://php.net/manual/en/timezones.php APP_TIMEZONE:“美国/纽约” APP_SERVICE_AUTHOR:“[电子邮件受保护]

邮件是一个可选设置,如果您想使用 gmail,我有基本设置

账户。您将需要应用程序密码作为 MAIL_PASSWORD 字段,而不是您的

gmail 密码。取消注释以下行以启用邮件。

#邮件: #&邮件环境 #MAIL_FROM:“[电子邮件受保护]” #MAIL_DRIVER:“smtp” #MAIL_HOST:“smtp.gmail.com” #MAIL_PORT:“587” #MAIL_USERNAME:“[电子邮件受保护]” #MAIL_PASSWORD:“” #MAIL_ENCRYPTION:“真” 服务:

Wings 是挂钩到 docker 并实际创建游戏的服务

服务器,

翅膀: 图片:ghcr.io/pterodactyl/wings:latest 重新启动:始终 网络: - ptero0 # 这些是Wings暴露的端口,我不建议更改它们。 端口: - “8443:443” - “2022:2022” 蒂:正确 环境: TZ:“美国/纽约” # 为了便于设置,将使用 root 用户。 WINGS_UID:0 WINGS_GID:0 WINGS_USERNAME:根 # 这是 docker 将容器的某些部分绑定到您实际的位置的地方 # 主机操作系统。这些位置稍后会用到。 卷: - "/var/run/docker.sock:/var/run/docker.sock" # 不要更改 - “/var/lib/docker/containers:/var/lib/docker/containers” # 不要更改 - "/opt/pterodactyl/wings/config:/etc/pterodactyl" # 随意更改。 - "/var/lib/pterodactyl:/var/lib/pterodactyl" # 不要更改 - "/var/log/pterodactyl:/var/log/pterodactyl" # 不要更改 - "/tmp/pterodactyl/:/tmp/pterodactyl/" # 建议不要更改。

这是一个数据库。没什么好解释的了。

数据库: 图片:mariadb:10.5 重新启动:始终 命令: --default-authentication-plugin=mysql_native_password 卷: -“/opt/翼手龙/面板/数据库:/var/lib/mysql” 环境: <<: *db-environment MYSQL_DATABASE: "panel" MYSQL_USER: "pterodactyl"

这是一个缓存数据库。没什么好解释的了。

缓存: 图片:redis:alpine 重新启动:总是

现在是有趣的部分。您的实际面板。

面板: 图片:ghcr.io/pterodactyl/panel:latest 重新启动:始终 # 对于 NGINX 反向代理,为了简单起见,我将使用这些端口。 端口: - “802:80” - “4432:443” # 在 docker 网络中将这些容器链接在一起。 链接: - 数据库 - 缓存 # 这是 docker 将容器的某些部分绑定到您实际的位置的地方 # 主机操作系统。这些其实并不那么重要。 卷: -“/opt/翼手龙/面板/appvar/:/app/var/” -“/opt/pterodactyl/panel/nginx/:/etc/nginx/http.d/” -“/opt/翼手龙/面板/日志/:/应用程序/存储/日志” # 设置配置内容 环境: <<: [*panel-environment] # <<: [*mail-environment] DB_PASSWORD: *db-password APP_ENV: "production" APP_ENVIRONMENT_ONLY: "false" CACHE_DRIVER: "redis" SESSION_DRIVER: "redis" QUEUE_DRIVER: "redis" REDIS_HOST: "cache" DB_HOST: "database" DB_PORT: "3306"

这是Wings的网络。我们在这里不需要太多深度,您需要知道的是

它允许 Wings 的端口通过。

网络: 翼0: 名称: ptero0 司机:桥 伊帕姆: 配置: - 子网:“192.55.0.0/16” 驱动程序选项: com.docker.network.bridge.name: ptero0 `

现在我尝试运行 docker-compose up 并收到此错误:

ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions under the 
服务
key, or omit the
版本
 key and place your service definitions at the root of the file to use version 1. For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file/

如何解决这个问题?

docker docker-compose
1个回答
0
投票

您正在使用非常旧版本的撰写工具。过去一年左右唯一支持的版本忽略了

version:
行;从 2020 年 2 月起,从
Compose 1.25.5
开始支持 version: "3.8"

当前 (2.x) 版本的 Compose 作为 Docker CLI 插件运行。 Docker 文档有安装说明

如果您有两个版本的 Compose 可用,则可能需要确保运行带有空格的

docker compose
,而不是带有连字符的
docker-compose

您也许可以将

version:
行更改为较旧的内容。 Compose 文件格式没有太大变化,声明
version: "3.0"
也很可能有效。请注意,这是一个非常复杂的 Compose 文件,它使用了一些过时的功能 (
links:
),具有一些不必要的设置 (
networks:
),并授予自身对整个主机系统的不受限制的管理员级别访问权限(通过绑定挂载Docker 套接字),并简化 Compose 文件可能有助于解决任何与版本相关的问题。

© www.soinside.com 2019 - 2024. All rights reserved.