Команда Docker Pull. За да инсталирате Sonarr с помощта на Docker, първо ще трябва да вземете най-новата версия на контейнера Sonarr от linuxserver Docker Hub. LinuxServer е хранилище на Docker с няколко контейнера за приложения за HTPC и домашен сървър. Sudo docker pull linuxserver/sonarr Издърпайте готовия Sonarr докер контейнер, като използвате горната команда.
Какво е обратен прокси? Обратният прокси е вид сървър, който се намира пред много други сървъри и препраща клиентските заявки към съответните сървъри. След това отговорът от сървъра също се получава и препраща от прокси сървъра към клиента.
Защо бихте използвали такава настройка? Има няколко добри причини за това. Тази настройка може да се използва за настройка на балансьор на натоварването, кеширане или за защита от атаки.
Няма да навлизам в подробности тук. Вместо това ще ви покажа как можете да използвате концепцията за обратен прокси, за да настроите множество услуги на един и същ сървър.
Направете същото изображение като това, което видяхте по-горе. Това, което можете да направите, е да стартирате Ngnix сървър в докер контейнер в режим на обратен прокси. Други уеб услуги също могат да се изпълняват в техните собствени съответни контейнери.
Nginx контейнерът ще бъде конфигуриран по начин, по който знае коя уеб услуга в кой контейнер работи.
Това е добър начин да спестите разходи за хостване на всяка услуга на различен сървър. Можете да имате множество услуги, работещи в един и същи Linux сървър, благодарение на обратния прокси сървър.
Нека ви покажа как да конфигурирате гореспоменатата настройка.
С тези стъпки можете да инсталирате множество контейнери за уеб базирани приложения, работещи под Nginx, като всеки самостоятелен контейнер съответства на съответния собствен домейн или поддомейн.
Първо, нека видим от какво се нуждаете, за да следвате този урок.
Ще имате нужда от следните знания, за да започнете лесно с този урок. Въпреки това можете да минете и без тях.
Linux система/сървър. Можете лесно да разположите Linux сървър за минути с помощта на облачната услуга Linode. Познаване на Linux командите и терминала. Основни познания за Docker. Трябва да имате инсталирани Docker и Docker Compose на вашия Linux сървър. Моля, прочетете нашето ръководство за инсталиране на Docker и Docker Compose на CentOS. Трябва също да притежавате домейн (за да можете да настройвате услуги на поддомейни).Използвах domain.com като примерно име на домейн в урока . Моля, уверете се, че сте го променили според вашите собствени домейни или поддомейни.
Освен горното, моля, уверете се и в следните неща:
Променете DNS записите на вашия домейн
В панела за запис A/AAAA или CNAME на вашия доставчик на име на домейн се уверете, че както домейнът, така и поддомейните (включително www) сочат към IP адреса на вашия сървър.
Това е пример за справка:
HostnameIP AddressTTLdomain.com172.105.50.178Default*172.105.50.178Defaultsub0.domain.com172.105.50.178Defaultsub1.domain.com172.105.50.178DefaultSwap space
За да сте сигурни, че всичките ви контейнерни приложения са спокойни и никога няма да изчерпят паметта си, след като ги разположите, трябва да имате необходимото място за суап на вашата система.
Винаги можете да коригирате swap според наличната RAM на вашата система. Можете да решите пространството за суап въз основа на пакета от контейнери за приложения на един сървър и оценката на тяхното кумулативно използване на RAM.
Започнете с настройка на вашия обратен прокси сървър nginx. Създайте директория с име 'reverse-proxy' и превключете към нея:
Създайте файл с име docker-compose.yml, отворете го в любимия си терминален текстов редактор като Vim или Nano.
За обратния прокси nginx ще използвам изображение на jwilder/nginx-proxy. Копирайте и поставете следното във файла docker-compose.yml:
Сега нека преминем през важните части на файла за композиране:
Вие сте декларирали четири тома, html, dhparam, vhost и сертификати. Те са постоянни данни, които определено бихте искали да запазите дори след като контейнерът е спрял. HTML & обемите на vhost ще бъдат много важни при следващото внедряване на контейнер Let's Encrypt. Те са проектирани да работят заедно. Докер сокерът е монтиран само за четене вътре в контейнера. Това е необходимо, за да може обратният прокси контейнер да генерира конфигурационните файлове на nginx, да открива други контейнери със специфична променлива на средата. Правилата за рестартиране са зададени винаги. Други опции включват при повреда и без спиране. В този случай винаги е изглеждало по-подходящо. Портовете 80 и 443 са обвързани съответно с хоста за http и https. И накрая, той използва различна мрежа, а не мостовата мрежа по подразбиране. Използването на дефинирана от потребителя мрежа е много важно. Това ще помогне за изолирането на всички контейнери, които трябва да бъдат прокси, заедно с разрешаването на обратния прокси контейнер да препраща клиентите към техните желани/предвидени контейнери и също така позволява на контейнерите да комуникират помежду си (което не е възможно с мостовата мрежа по подразбиране освен ако icc не е зададено на true за демона).Имайте предвид, че YML е много придирчив към разделите и отстъпа.
За целта можете да използвате jrcs/letsencrypt-nginx-proxy-companion изображение на контейнер.
В същия файл docker-compose.yml, който сте използвали преди, добавете следните редове:
В тази дефиниция на услугата:
Използвате точно същите томове, които сте използвали за контейнера за обратен прокси. Споделянето на html и vhost обеми е необходимо, за да бъде успешно ACME Challenge на letsencrypt. Този контейнер ще генерира сертификатите в /etc/nginx/certs, в контейнера. Ето защо споделяте този том с вашия обратен прокси контейнер. Томът dhparam ще съдържа файла dhparam. Гнездото е монтирано, за да открива други контейнери със специфична променлива на средата. Тук сте дефинирали две променливи на средата. Променливата NGINX_PROXY_CONTAINER сочи към обратния прокси контейнер. Задайте го на името на контейнера. DEFAULT_EMAIL е имейлът, който ще се използва при генериране на сертификати за всеки домейн/поддомейн. Опциятаdependent_on е настроена така, че тази услуга да изчаква обратното прокси да стартира първо, тогава и само тогава това ще започне.Накрая, този контейнер също споделя същата мрежа. Това е необходимо, за да могат двата контейнера да комуникират.След като дефинициите на услугата са готови, завършете докер- съставете файл със следните редове:
Мрежовата мрежа е настроена на външна, тъй като прокси контейнерите също ще трябва да използват тази мрежа. И ако оставим мрежата да бъде създадена от docker-comspose, името на мрежата ще зависи от текущата директория. Това ще създаде мрежа със странно име.
Освен това, други контейнери ще трябва да настроят тази мрежа да бъде външна така или иначе, в противен случай тези композирани файлове също ще трябва да се намират в същата тази директория, нито една от които не е идеална.
Затова създайте мрежата, като използвате
Следва цялото съдържание на файла docker-compose.yml.
Накрая, можете да разположите тези два контейнера (Ngnix и Let's Encrypt), като използвате следната команда:
Контейнерът, който ще обслужва интерфейса, ще трябва да дефинира две променливи на средата.
VIRTUAL_HOST: за генериране на конфигурация за обратен прокси
LETSENCRYPT_HOST: за генериране на необходимите сертификати
Уверете се, че имате правилни стойности за тези две променливи. Можете да стартирате nginx-dummy изображение с обратен прокси по следния начин:
Сега, ако отидете до вашия поддомейн, използван в предишната команда, трябва да видите съобщение от Ngnix сървъра.
След като го тествате успешно, можете да спрете работещия докер контейнер:
Можете също да спрете обратния прокси Ngnix, ако няма да го използвате:
Процесът на настройване на други контейнери, така че да могат да бъдат проксиирани, е МНОГО прост.
След малко ще го покажа с два екземпляра на внедряване на Nextcloud. Нека първо да ви кажа какво правите тук.
Не се свързвайте с нито един портКонтейнерът може да пропусне порта, който обслужва интерфейса. Контейнерът за обратен прокси автоматично ще открие това.
Ако обратният прокси контейнер не успее да открие порта, можете да дефинирате друга променлива на средата с име VIRTUAL_PORT с порта, обслужващ фронтенда или която услуга искате получите прокси, като '80' или '7765'.
Задайте Let's Encrypt имейл, специфичен за контейнерМожете да замените променливата DEFAULT_EMAIL и да зададете конкретен имейл адрес за сертификат(и) за домейн/поддомейн на конкретен контейнер/уеб услуга, като зададете имейл идентификатора на променливата на средата LETSENCRYPT_EMAIL. Това работи на базата на контейнер.
Сега, след като знаете всички тези неща, позволете ми да ви покажа командата, която внедрява екземпляр на Nextcloud, който ще бъде проксиран чрез прокси контейнера на nginx и ще има активиран TLS(SSL/HTTPS).
Това НЕ Е ИДЕАЛНО внедряване. Следващата команда се използва само с демонстративна цел.В примера сте използвали същата мрежа като обратните прокси контейнери, дефинирали сте двете променливи на средата с подходящите поддомейни (Задайте вашите съответно). След няколко минути трябва да видите Nextcloud да работи на sub0.domain.com. Отворете го в браузър, за да проверите.
Можете да разположите друг екземпляр на Nextcloud точно като този, на различен поддомейн, като следното:
Сега трябва да видите различен екземпляр на Nextcloud, работещ на различен поддомейн на същия сървър.
С този метод можете да разположите различни уеб приложения на един и същ сървър, обслужвани под различни поддомейни, което е доста удобно.
Сега, след като сте настроили тази настройка, можете да продължите и да я използвате в действителни внедрявания със следните примери:
За повече статии като тези, абонирайте се за нашия бюлетин или обмислете да станете член. За всякакви въпроси, не се колебайте да коментирате по-долу.
Станете член БЕЗПЛАТНОСтанете член, за да получавате редовен бюлетин за Linux (2-4 пъти месечно) и достъп до съдържание само за членове.
Присъединете се към разговора.
Коментарите са затворени.
PREV: Как да обвържете ldap с акаунт на чужд доверен домейн за удостоверяване на приложението
NEXT: Не може да се свърже с грешка на LDAP сървъра в Nagios