Skip to main content

Установка PeerTube из локальных Docker-образов

docker commit peertube-peertube-1 local_peertube_image
docker commit peertube-postgres-1 local_postgres_image
docker commit peertube-redis-1 local_redis_image
docker commit peertube-webserver-1 local_webserver_image
docker commit certbot local_certbot_image
docker commit peertube-postfix-1 local_postfix_image
docker save -o peertube_image.tar local_peertube_image
docker save -o postgres_image.tar local_postgres_image
docker save -o redis_image.tar local_redis_image
docker save -o webserver_image.tar local_webserver_image
docker save -o certbot_image.tar local_certbot_image
docker save -o postfix_image.tar local_postfix_image


REPOSITORY              TAG       IMAGE ID       CREATED          SIZE
local_postfix_image     latest    899434ea7b61   32 minutes ago   123MB
local_certbot_image     latest    4f419d7034e6   32 minutes ago   118MB
local_webserver_image   latest    4acfa925aec0   32 minutes ago   58.5MB
local_redis_image       latest    dc04a92381ab   33 minutes ago   30MB
local_postgres_image    latest    47370c7abbaf   33 minutes ago   238MB
local_peertube_image    latest    a0a494e752be   33 minutes ago   1.71GB

 

==================================================
mkdir peertube (если нет)
cd peertube

docker load -i peertube_image.tar
docker load -i postgres_image.tar
docker load -i redis_image.tar
docker load -i webserver_image.tar
docker load -i certbot_image.tar
docker load -i postfix_image.tar

mkdir -p docker-volume/nginx

Перемещаем конфиг с названием peertube в каталог docker-volume/nginx

mkdir -p docker-volume/certbot

docker run -it --rm --name certbot -p 80:80 -v "$(pwd)/docker-volume/certbot/conf:/etc/letsencrypt" local_certbot_image certonly --standalone
Если не получилось, стираем всё из каталога conf
rm -rf docker-volume/certbot/conf/*
Даём другой вариант команды (в конце инструкции см. дополнение)
docker run -it --rm --name certbot -p 80:80 -v "$(pwd)/docker-volume/certbot/conf:/etc/letsencrypt" certbot/certbot certonly --standalone

Запускаем
docker compose up -d
--------------------------------------------
--------------------------------------------

Сброс пароля Peertube
----------------------------
1. Вход в sh оболочку контейнера
docker exec -it peertube-peertube-1 /bin/sh

2. Внутри контейнера обновляем пакеты и устанавливаем программу mc
apt update
apt install mc

3. Через mc заходим в каталог config и меняем название файла production.yaml.example на production.yaml

4. Внутри контейнера выходим из mc и переходим в каталог config через терминал
cd config

5. Внутри контейнера запускаем команду сброса пароля (и задания нового пароля)
npm run reset-password -- -u root

6. Выходим из контейнера
exit
-----------------------------
Либо, не заходя в контейнер, использовать такую команду:
docker exec -it peertube-peertube-1 /bin/sh -c "cd config && cp production.yaml.example production.yaml && npm run reset-password -- -u root"
================================================

ДОПОЛНЕНИЕ для контейнера certbot
-------------------------------------
Чтобы Docker не проверял наличие обновлений для образа на Docker Hub и использовал только локальный образ, можно добавить флаг --offline или использовать флаг --pull с другим значением.

Однако, важно отметить, что в Docker нет встроенного флага для полной отмены проверки наличия обновлений образа. Но можно избежать загрузки новых версий образа с помощью следующих подходов:
1. Использовать флаг --pull=never

Вы можете использовать флаг --pull=never, чтобы Docker не пытался загрузить образ из интернета и использовал только локальный образ, если он уже существует.

Пример:
docker run --pull=never -it --rm --name certbot -p 80:80 -v "$(pwd)/docker-volume/certbot/conf:/etc/letsencrypt" certbot/certbot certonly --standalone

Этот флаг указывает Docker не загружать образ, даже если его нет локально. В таком случае, если образ отсутствует локально, Docker выдаст ошибку.
2. Использовать локальный образ с конкретной версией

Если вам нужно зафиксировать конкретную версию образа и избежать его обновления, можно явно указать тег версии, вместо использования latest, который всегда будет проверять на обновления:
docker run -it --rm --name certbot -p 80:80 -v "$(pwd)/docker-volume/certbot/conf:/etc/letsencrypt" certbot/certbot:1.22.0 certonly --standalone

Где 1.22.0 — это версия образа certbot. Указывая точную версию, вы гарантируете, что Docker будет использовать только эту версию без проверки обновлений.