---
title: "Разверните уже имеющееся приложение с помощью erpc worker import"
description: "erpc worker import читает каталог приложения и пишет его erpc.toml, так что пакет Cargo или бинарный файл Linux на любом языке развёртывается без правки кода."
canonical: "https://erpc.global/ru/doc/erpc-cli/worker-import/"
locale: "ru"
---

# Разверните уже имеющееся приложение с помощью erpc worker import

`erpc worker import` принимает уже имеющееся у вас приложение как есть. Он записывает `erpc.toml` приложения и ничего не меняет в его коде.

Эта страница описывает ERPC CLI `v0.1.0-rc.4` — пререлиз.

## Импорт и развёртывание

Приложение может быть ботом, который сейчас работает под systemd или Docker, или сервисом на другом языке. `import` читает каталог приложения и записывает `erpc.toml` по тому, что в этом каталоге описано. Больше в приложении ничего не записывается, ничего в нём не запускается, и его код не меняется. erpc добавляет приложение в свой список, как это делает `init`.

```bash
cd my-bot                                   # a Cargo package
erpc worker import                          # writes erpc.toml from what is there
erpc worker check                           # what it describes, and what is missing
erpc worker deploy                          # your VPS, or a new hourly one

cd my-go-service && make linux              # any other toolchain: build the Linux binary your way
erpc worker import --binary dist/service --port 8080 --health /healthz
erpc worker deploy
```

- **Пакет Cargo** собирается командой `cargo build --release`, так же как приложение, созданное `init`. Приложение называется по имени пакета, если `--name` не задаёт другое, а `--bin` выбирает бинарный файл, когда в пакете их несколько. Корень workspace отклоняется: направьте `import` на сам пакет.
- **Бинарный файл Linux, собранный где угодно и на любом языке,** развёртывается так же — с `--binary <PATH>` — и поставляется как есть. erpc читает его заголовок и отклоняет файл, который сервер не может запустить: бинарный файл macOS или Windows, скрипт, разделяемую библиотеку, обрезанный файл или файл для архитектуры, отличной от `build.target`. Бинарный файл должен быть статическим или слинкованным с glibc, с загрузчиком по обычному пути. Это файл приложения: ссылка под этим именем, ведущая за пределы каталога приложения, отклоняется. Развёртывание останавливается на непригодном бинарном файле ещё до покупки сервера. Пересоберите бинарный файл перед развёртыванием, которое должно включать изменение.

## Что читает import

| В каталоге | Что `import` с этим делает |
| --- | --- |
| `.env.example` и похожие файлы-примеры | Каждое имя становится настройкой, если может ею быть: имя, которое не состоит из заглавных букв, цифр и `_` (без цифры в начале), или имя, которое erpc или сервер задают сами (`ERPC_WORKER_…`, `LD_…`), пропускается. Обычное имя попадает в `[vars]` со значением из примера. Имя, которое само похоже на имя секрета или значение которого содержит учётные данные, указывается вместе с командой, которая его сохранит, а его значение не копируется |
| `.env` | Читаются только имена, кроме номера порта |
| `PORT`, `API_PORT`, `EXPOSE` из Dockerfile | `run.port`, если его не задаёт `--port`. `--health <PATH>` добавляет проверку работоспособности на этом порту |
| `GRPC_ENDPOINT`, `SHREDS_ENDPOINT` и другие настройки, которые предоставляет линия данных | Не попадают в `[vars]`: их задаёт флаг линии в `deploy` |
| `wallet.json`, `id.json`, `*keypair.json` | Указываются вместе с командой `erpc worker key import <FILE> --wipe`, которая помещает ключ туда, откуда его читает erpc worker, и стирает файл |
| Compose-файл с Redis или PostgreSQL | `[services]`, чтобы `deploy` установил их на сервер |
| `Dockerfile`, сам compose-файл | Не используются для запуска приложения: erpc worker сам запускает бинарный файл в усиленном юните systemd |

`import --chain` задаёт блокчейн, для которого предназначено приложение, по умолчанию `solana`.

## Как import читает каталог

Возможно, вы клонировали этот каталог минуту назад, поэтому `import` читает его с осторожностью.

- **`erpc.toml` создаётся заново.** Если по этому пути что-либо есть, `import` отказывается: он никогда не перезаписывает файл и не пишет через ссылку.
- **Он читает обычные файлы внутри каталога, до 1 MiB каждый.** Ссылка, ведущая за пределы каталога, канал, устройство, файл большего размера и файл не в UTF-8 не читаются, и о каждом из них сообщается.
- **Ни одно значение, которое он принимает за секрет, не копируется.** Он ищет учётные данные по их форме, поэтому проверка — это фильтр, а не доказательство: секрет в незнакомой ему форме копируется как любое значение. Прочитать `erpc.toml` перед коммитом — ваша задача.
- **`erpc worker check` предупреждает о меньшем числе видов значений, чем удерживает `import`.** Он ничего не сообщает об RPC URL с ключом в пути или о фразе восстановления в `[vars]`: храните такие значения с помощью `erpc worker secret put`.

## Что ваше приложение находит на сервере

- **Настройки поступают как переменные окружения** — и `[vars]`, и `[secrets]`. На сервере нет `.env`, и приложение, которое читает файл `.env` библиотекой dotenv, продолжает работать.
- **Его собственный каталог доступен только для чтения.** Файлы, которые оно записывает, попадают в каталог, указанный в `ERPC_WORKER_STATE_DIR` (он же его `HOME`); развёртывание этот каталог сохраняет, а `erpc worker backup` создаёт его резервную копию.
- **Торговый ключ поступает через канал, а не в файле:** 64 байта через файловый дескриптор, указанный в `ERPC_WORKER_KEY_FD`, один раз, при запуске приложения, а открытый ключ — в `ERPC_WORKER_PUBKEY`. В приложении, которое читает файл ключа, нужно изменить это одно чтение; как это сделать, показывает `src/wallet.rs` шаблона pumpfun.
- **Это один бинарный файл и файлы, перечисленные в `run.files`.** Всё остальное, что оно открывает во время работы, должно быть в этом списке.

## Дальнейшие шаги

- [Ключи и секреты](https://erpc.global/ru/doc/erpc-cli/worker-secrets/): сохраните настройки, которые удержал `import`, и торговый ключ.
- [Брандмауэр и WAF](https://erpc.global/ru/doc/erpc-cli/worker-firewall-and-waf/): выберите, кто может обращаться к приложению.
- [Руководство по воркерам](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/worker.md): все файлы, которые читает `import`, и формы учётных данных, которые он ищет.
