mirror of
https://github.com/andrey271192/amnezia-web-pro-deploy.git
synced 2026-09-20 13:50:06 +00:00
feat: install Compose v2 when apt plugin is missing
Add lib-compose-v2.sh: try docker-compose-plugin from APT only if indexed, otherwise download official CLI plugin from GitHub Releases. quick-install bootstraps via curl before clone; install/update reuse the helper from repo. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
42
README.md
42
README.md
@@ -4,11 +4,13 @@
|
||||
|
||||
## Требования
|
||||
|
||||
- VPS с **Docker** и **Docker Compose v2** — команда **`docker compose`** (плагин `docker-compose-plugin`).
|
||||
**Не подходит** старый **`docker-compose`** 1.x из Ubuntu — на новых образах будет ошибка **`ContainerConfig` / KeyError**.
|
||||
- Установка плагина: `sudo apt-get update && sudo apt-get install -y docker-compose-plugin`
|
||||
- Также нужны **curl** и при первой установке — **git**
|
||||
- Активная подписка и **ключ** (GitHub PAT с `read:packages`), см. закрытый пост Boosty
|
||||
- VPS с установленным **Docker** и запущенным демоном.
|
||||
- Командная строка должна понимать **`docker compose`** (Compose v2).
|
||||
Если пакета **`docker-compose-plugin`** нет в ваших APT‑репозиториях, **`quick-install.sh`** по умолчанию **скачивает официальный CLI‑плагин** Compose v2 с GitHub Releases в **`/usr/local/lib/docker/cli-plugins/`** (переменные **`COMPOSE_CLI_VERSION`** / **`DISABLE_STANDALONE_COMPOSE_DOWNLOAD=1`** — см. `scripts/lib-compose-v2.sh`).
|
||||
- Альтернатива: добавить **[репозиторий Docker CE](https://docs.docker.com/engine/install/ubuntu/)** и поставить **`docker-compose-plugin`** из apt.
|
||||
- **Не использовать** одноимённый устаревший **`docker-compose` 1.x** (Python): на образах GHCR будет **`ContainerConfig` / KeyError**.
|
||||
- Нужны **curl** и при первой установке — **git**
|
||||
- Подписка и **ключ** (GitHub PAT с `read:packages`), см. закрытый пост Boosty
|
||||
|
||||
## Одна команда — FREE → PRO (спросит только ключ)
|
||||
|
||||
@@ -25,6 +27,8 @@ curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy
|
||||
3. Подставляет **`AWG_CONTAINER`** автоматически, если на сервере уже есть `amnezia-awg` или `amnezia-awg2`.
|
||||
4. Клонирует/обновляет **`/opt/amnezia-web-pro-deploy`**, тянет тег из [`PRO_IMAGE_TAG`](PRO_IMAGE_TAG), запрашивает **ключ PAT** (ввод с **`/dev/tty`**).
|
||||
|
||||
Перед всем этим, если **`docker compose`** отсутствует, установщик **подтягивает** модуль Compose v2 (см. выше).
|
||||
|
||||
Отключить снос FREE (редко нужно): `SKIP_REMOVE_FREE=1 curl … | sudo -E bash`.
|
||||
|
||||
Если **нет интерактива** на stdin:
|
||||
@@ -48,21 +52,18 @@ HOST_PORT=8081 curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia
|
||||
|
||||
### `KeyError: 'ContainerConfig'` и в трассировке указан **`docker-compose` 1.29.x** (`/usr/lib/python3/...`)
|
||||
|
||||
Старый **Docker Compose v1** из пакета `docker-compose` **непонимает** образы из GHCR с современным OCI-манифестом без поля **`ContainerConfig`**. Нужна **Compose v2** — команда **`docker compose`** (пакет-плагин).
|
||||
Старый **Docker Compose v1** из пакета `docker-compose` **непонимает** образы из GHCR с современным OCI-манифестом без поля **`ContainerConfig`**. Нужна **Compose v2** — **`docker compose`**.
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y docker-compose-plugin
|
||||
docker compose version
|
||||
```
|
||||
|
||||
Затем обновите файлы установки (**на ветке `main` уже запрещён fallback на 1.x**):
|
||||
На актуальной ветке **`main`** установщики **не дергают legacy `docker-compose` 1.x**, а поднимают Compose v2 через APT (**если пакет виден**) либо **официальный CLI‑плагин с GitHub**.
|
||||
|
||||
```bash
|
||||
sudo git -C /opt/amnezia-web-pro-deploy fetch origin main
|
||||
sudo git -C /opt/amnezia-web-pro-deploy reset --hard origin/main
|
||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo bash
|
||||
```
|
||||
|
||||
Вручную: **`docker-compose-plugin`** из [репозитория Docker CE](https://docs.docker.com/engine/install/ubuntu/) или шаг из справки в **`scripts/lib-compose-v2.sh`**.
|
||||
|
||||
Если после неудачного `up` образовался полубитый контейнер:
|
||||
|
||||
```bash
|
||||
@@ -72,6 +73,21 @@ sudo bash /opt/amnezia-web-pro-deploy/scripts/install.sh
|
||||
|
||||
Если файл **`.env` удалён или пуст**, снова запустите **`quick-install.sh`** — он заново попросит PAT.
|
||||
|
||||
### `Unable to locate package docker-compose-plugin` (Ubuntu без репозитория Docker)
|
||||
|
||||
Пакет поставляет официальный репозиторий Docker CE на Ubuntu/Debian. Если его подключать не хотите или `apt-get` всё равно пишет, что пакета нет:
|
||||
|
||||
1. Просто снова запустите обновлённый **`quick-install.sh`** после `git pull` репозитория установки — он попытается **скачать плагин Compose v2 напрямую** с GitHub (нужны `curl` и исходящий HTTPS до `github.com`).
|
||||
|
||||
Либо отдельно:
|
||||
|
||||
```bash
|
||||
sudo curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/scripts/lib-compose-v2.sh -o /tmp/lib-compose-v2.sh
|
||||
sudo bash -c 'source /tmp/lib-compose-v2.sh && ensure_compose_v2'
|
||||
sudo rm -f /tmp/lib-compose-v2.sh
|
||||
docker compose version
|
||||
```
|
||||
|
||||
## Ручной способ (git + .env)
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user