Учтите что в этом варианте .env копируется во внутрь контейнера. Вы можете подать переменные окружения с помощью --env-file.
CONTAINER_NAME="tg-bot-yt-downloader"
IMAGE_NAME="tg-bot-yt-downloader:latest"
docker build -t "$IMAGE_NAME" .
docker run -d \
--name "$CONTAINER_NAME" \
--restart unless-stopped \
"$IMAGE_NAME"Заранее поставьте докер 😁👍, вы же не долбаеб
sudo mkdir -p /opt/tg-bot-yt-downloader
sudo chown -R $USER:$USER /opt/tg-bot-yt-downloaderСоздаем
ssh-keygen -t ed25519 -C "vps-deploy-key" -f ~/.ssh/id_ed25519_githubчат гпт сказал перезапустить агента по ssh, ну я хз
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519_githubКОПИРУЕМ. Его вставляем в GitHub (Deploy keys)
cat ~/.ssh/id_ed25519_github.pubVPS_SSH_KEY, это ключ для клонирования репозитория
Создать SSH-конфиг:
cat > ~/.ssh/config << 'EOF'
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github
IdentitiesOnly yes
EOFПроверить доступ:
ssh -T git@github.comНу и клонируем репу.
cd /opt/tg-bot-yt-downloader
git clone REPO . в папку /opt/tg-bot-yt-downloader
.env. Пример:.env.example
chmod +x /opt/tg-bot-yt-downloader/scripts/deploy.shТеперь создадим ключ для VPS_SSH_KEY:
ssh-keygen -t ed25519 -C "github-actions-vps" -f ~/.ssh/id_ed25519_github_actionsДобавим этот ключ в доверенные к подключению
cat ~/.ssh/id_ed25519_github_actions.pub >> ~/.ssh/authorized_keysЗабираем приватный ключ и вставляем в секрет VPS_SSH_KEY
cat ~/.ssh/id_ed25519_github_actions-
VPS_HOST— IP или домен VPS -
VPS_PORT— SSH-порт, обычно 22 -
VPS_USER— пользователь на VPS -
VPS_SSH_KEY— приватный SSH-ключ для GitHub Actions
Ребята, docker какашка. Если вы питонист (боже успаси) то .env можно читать миллионом способов.
Можно подать его при билде контейнера с помощью --env-file (в scripts\deploy.sh)
docker run -d \
--name "$CONTAINER_NAME" \
--restart unless-stopped \
--env-file "$ENV_FILE" \
"$IMAGE_NAME"
Можно скопировать в Dockerfile
COPY .env .envСейчас Deploy сносит все локальные изменения на vps, качает и запускает то что запушено на git. Поэтому если что-то менялди на vps локально, не забывайте сохранять.
Чтобы указать файлы которые не должны удаляться используейте -e UR_FILE в файле scripts\deploy.sh
git fetch origin
git checkout "$BRANCH"
git reset --hard "origin/$BRANCH"
git clean -fd -e .env