نحوه استفاده از Traefik به عنوان پروكسي معكوس براي كانتينرهاي Docker در Ubuntu 18.04
Docker مي تواند روشي كارآمد براي اجراي برنامه هاي وب در حال توليد باشد ، اما ممكن است بخواهيد چندين برنامه را در يك هاست Docker اجرا كنيد. در اين شرايط ، بايد پروكسي معكوس تنظيم كنيد زيرا فقط مي خواهيد پورت 80 و 443 را در معرض ديد قرار دهيد.
Traefik يك پروكسي معكوس آگاه از Docker است كه شامل داشبورد نظارت خود ميباشد. در اين آموزش ، از Traefik براي مسير يابي درخواست ها به دو كانتينر مختلف برنامه وب استفاده مي كنيد: يك كانتينر وردپرس و يك كانتينر Adminer كه هر كدام با يك پايگاه داده MySQL در ارتباط هستند. با استفاده از Let’s Encrypt ، Traefik را پيكربندي مي كنيد تا همه چيز را از طريق HTTPS ارائه دهد.
پيش نيازها
براي دنبال كردن اين آموزش ، به موارد زير نياز داريد:
- يك سرور مجازي Ubuntu 18.04 با پيروي از راهنماي ستاپ اوليه سرور مجازي Ubuntu 18.04 ، از جمله كاربر غير ريشه sudo و فايروال ، راه اندازي شده.
- Docker روي سرور مجازي شما نصب شده باشد ، كه مي توانيد با دنبال كردن نحوه نصب و استفاده از Docker در Ubuntu 18.04 اين كار را انجام دهيد.
- Docker Compose با دستورالعمل نحوه نصب Docker Compose در Ubuntu 18.04 نصب شده باشد.
- يك دامنه و سه ركورد A ، db-admin ، blog و monitor. هر كدام بايد به آدرس IP سرور مجازي شما اشاره كنند. در طول اين آموزش ، دامنه خود را به جاي your_domain در فايلهاي پيكربندي و مثالها جايگزين كنيد.
مرحله 1 – پيكربندي و اجراي Traefik
پروژه Traefik داراي يك تصوير Docker رسمي است ، بنابراين ما براي اجراي Traefik در يك كانتينر Docker از آن استفاده خواهيم كرد.
اما قبل از راه اندازي كانتينر Traefik ، بايد يك فايل پيكربندي ايجاد كرده و يك پسورد رمزگذاري شده تنظيم كنيم تا بتوانيم به داشبورد نظارت دسترسي پيدا كنيم.
براي ايجاد اين گذرواژه رمزگذاري شده از ابزار htpasswd استفاده خواهيم كرد. ابتدا برنامه كمكي را نصب كنيد كه در بسته apache2-utils وجود دارد:
· $ sudo apt-get install apache2-utils·
سپس رمز عبور را با htpasswd توليد كنيد. secure_password را با رمز عبوري كه مي خواهيد براي كاربر مدير Traefik استفاده كنيد جايگزين كنيد:
· $ htpasswd -nb admin secure_password·
خروجي برنامه به صورت زير خواهد بود:
Output
admin:$apr1$ruca84Hq$mbjdMZBAG.KWn7vfN/SNK/
براي تنظيم احراز هويت پايه HTTP براي داشبورد بررسي و نظارت بر سلامت Traefik ، از خروجي منحصر به فرد خود در فايل پيكربندي Traefik استفاده خواهيد كرد. تمام خط خروجي خود را كپي كنيد تا بعداً بتوانيد آن را جايگذاري كنيد. از خروجي مثال استفاده نكنيد.
براي پيكربندي سرور مجازي Traefik ، با استفاده از قالب TOML ، يك فايل پيكربندي جديد به نام traefik.toml ايجاد خواهيم كرد. TOML يك زبان پيكربندي شبيه به فايل هاي INI اما استاندارد است. اين فايل به ما اجازه مي دهد تا سرور مجازي Traefik و ادغام هاي مختلف يا providers را كه مي خواهيم استفاده كنيم پيكربندي كنيم. در اين آموزش ، ما از سه ارائه دهنده موجود Traefik استفاده خواهيم كرد: api ، docker و acme. آخرين مورد ، acme با استفاده از Let’s Encrypt از گواهينامه هاي TLS پشتيباني مي كند.
فايل جديد خود را در nano يا ويرايشگر متن مورد علاقه خود باز كنيد:
· $ nano traefik.toml·
ابتدا دو نقطه ورودي به نام http و https اضافه كنيد كه به طور پيش فرض همه backends به آنها دسترسي خواهند داشت:
traefik.toml
defaultEntryPoints = [“http”, “https”]
بعداً در اين فايل نقاط ورودي http و https را پيكربندي خواهيم كرد.
در مرحله بعد ، ارائه دهنده api را پيكربندي كنيد ، كه به شما امكان دسترسي به رابط داشبورد را مي دهد. اينجاست كه مي توانيد خروجي را از دستور htpasswd پيست كنيد:
traefik.toml
…
[entryPoints]
[entryPoints.dashboard]
address = “:8080”
[entryPoints.dashboard.auth]
[entryPoints.dashboard.auth.basic]
users = [“admin:your_encrypted_password”]
[api]
entrypoint=”dashboard”
داشبورد يك برنامه وب جداگانه است كه در كانتينر Traefik اجرا مي شود. ما داشبورد را تنظيم مي كنيم تا روي پورت 8080 كار كند.
بخش entrypoints.dashboard نحوه ارتباط ما با ارائه دهنده api را تنظيم مي كند و بخش entrypoints.dashboard.auth.basic تأييد اعتبار اصلي HTTP را براي داشبورد پيكربندي مي كند. براي مقدار ورودي كاربران از خروجي دستور htpasswd استفاده كنيد. مي توانيد ورودهاي اضافي را با جدا كردن آنها با ويرگول مشخص كنيد.
ما اولين ورودي خود را تعريف كرده ايم ، اما بايد ساير موارد را براي ارتباطات استاندارد HTTP و HTTPS كه به سمت ارائه دهنده api نيست ، تعريف كنيم. بخش entryPoints آدرس هايي را كه Traefik و كانتينرهاي پروكسي مي توانند به آن گوش دهند پيكربندي مي كند. اين خطوط را به فايل زير عنوان entryPoints اضافه كنيد:
traefik.toml
…
[entryPoints.http]
address = “:80”
[entryPoints.http.redirect]
entryPoint = “https”
[entryPoints.https]
address = “:443”
[entryPoints.https.tls]
…
نقطه ورود http پورت 80 را كنترل مي كند ، در حالي كه نقطه ورود https از پورت 443 براي TLS / SSL استفاده مي كند. ما به طور خودكار تمام ترافيك موجود در پورت 80 را به نقطه ورود https هدايت مي كنيم تا اتصالات ايمن را براي همه درخواست ها تضمين كنيم.
در مرحله بعد ، اين بخش را براي پيكربندي Let’s Encrypt پشتيباني از گواهي Traefik اضافه كنيد:
traefik.toml
…
[acme]
email = “your_email@your_domain”
storage = “acme.json”
entryPoint = “https”
onHostRule = true
[acme.httpChallenge]
entryPoint = “http”
اين بخش acme ناميده مي شود زيرا ACME نام پروتكلي است كه براي ارتباط با Let’s Encrypt براي مديريت گواهينامه ها استفاده مي شود. سرويس Let’s Encrypt نياز به ثبت نام با يك آدرس ايميل معتبر دارد ، بنابراين براي اينكه Traefik براي هاست هاي ما گواهي توليد كند ، كليد ايميل را روي آدرس ايميل خود تنظيم كنيد. سپس مشخص مي كنيم كه اطلاعاتي كه از Let’s Encrypt دريافت خواهيم كرد را در يك فايل JSON به نام acme.json ذخيره خواهيم كرد. كليد entryPoint بايد به نقطه ورودي پورت 443 اشاره كند ، كه در مورد ما نقطه ورود https است.
كليد onHostRule نحوه عملكرد Traefik براي توليد گواهينامه ها را تعيين مي كند. ما مي خواهيم گواهينامه خود را به محض ايجاد كانتينرها با نام هاست هاي مشخص دريافت كنيم ، و اين همان كاري است كه تنظيم onHostRule انجام مي دهد.
بخش acme.httpChallenge به ما اجازه مي دهد تا تعيين كنيم چگونه Let’s Encrypt بتواند تأييد كند كه گواهي توليد شده است. ما در حال پيكربندي آن هستيم تا به عنوان بخشي از چالش از طريق نقطه ورود http ، يك فايل را ارائه دهد.
در آخر ، بياييد با اضافه كردن اين خطوط به فايل ، ارائه دهنده docker را پيكربندي كنيم:
traefik.toml
…
[docker]
domain = “your_domain”
watch = true
network = “web”
ارائه دهنده docker ، Traefik را قادر مي سازد به عنوان يك پروكسي در مقابل كانتينرهاي Docker عمل كند. ما ارائه دهنده را پيكربندي كرده ايم تا كانتينرهاي جديدي را در شبكه وب مشاهده كند كه به زودي ايجاد خواهيم كرد و آنها را به عنوان زير دامنه هاي your_domain نمايش مي دهد.
در اين مرحله ، traefik.toml بايد داراي محتواي زير باشد:
traefik.toml
defaultEntryPoints = [“http”, “https”]
[entryPoints]
[entryPoints.dashboard]
address = “:8080”
[entryPoints.dashboard.auth]
[entryPoints.dashboard.auth.basic]
users = [“admin:your_encrypted_password”]
[entryPoints.http]
address = “:80”
[entryPoints.http.redirect]
entryPoint = “https”
[entryPoints.https]
address = “:443″
[entryPoints.https.tls]
[api]
entrypoint=”dashboard”
[acme]
email = “your_email@your_domain”
storage = “acme.json”
entryPoint = “https”
onHostRule = true
[acme.httpChallenge]
entryPoint = “http”
[docker]
domain = “your_domain”
watch = true
network = “web”
Copy
فايل را ذخيره كرده و از ويرايشگر خارج شويد. با استفاده از اين پيكربندي ها ، مي توانيم Traefik را مقداردهي اوليه كنيم.
مرحله 2 – اجراي كانتينر Traefik
سپس ، يك شبكه Docker براي پروكسي ايجاد كنيد تا با كانتينرها به اشتراك گذاشته شود. شبكه Docker لازم است تا بتوانيم از آن در برنامه هايي كه با استفاده از Docker Compose اجرا مي شوند استفاده كنيم. بياييد با اين شبكه وب تماس بگيريم:
- $ docker network create web
وقتي كانتينر Traefik شروع به كار كرد ، ما آن را به اين شبكه اضافه خواهيم كرد. سپس مي توانيم كانتينرهاي ديگري را براي پروكسي Trafik به اين شبكه اضافه كنيم.
سپس ، يك فايل خالي ايجاد كنيد كه اطلاعات Let’s Encrypt ما را در خود نگه دارد. ما اين را در كانتينر به اشتراك خواهيم گذاشت تا Traefik بتواند از آن استفاده كند:
- $ touch acme.json
Traefik فقط درصورتي امكان استفاده از اين فايل را خواهد داشت كه كاربر ريشه داخل كانتينر دسترسي خواندن و نوشتن منحصر به فرد به آن داشته باشد. براي انجام اين كار ، مجوزهاي acme.json را قفل كنيد تا فقط صاحب فايل اجازه خواندن و نوشتن را داشته باشد:
- $ chmod 600 acme.json
هنگامي كه فايل به Docker منتقل شد ، مالك به طور خودكار به كاربر اصلي داخل كانتينر تغيير مي كند.
در آخر ، با استفاده از اين دستور كانتينر Traefik را ايجاد كنيد:
- docker run -d
- -v /var/run/docker.sock:/var/run/docker.sock
- -v $PWD/traefik.toml:/traefik.toml
- -v $PWD/acme.json:/acme.json
- -p 80:80
- -p 443:443
- -l traefik.frontend.rule=Host:monitor.your_domain
- -l traefik.port=8080
- –network web
- –name traefik
- traefik:1.7-alpine
دستور كمي طولاني است ، بنابراين اجازه دهيد آن را تجزيه كنيم.
ما از پرچم -d براي اجراي كانتينر در پس زمينه به عنوان يك دمون استفاده مي كنيم. سپس فايل docker.sock خود را در كانتينر به اشتراك مي گذاريم تا روند Traefik بتواند تغييرات در كانتينرها را گوش دهد. همچنين فايل پيكربندي traefik.toml و فايل acme.json را كه ايجاد كرديم در كانتينر به اشتراك مي گذاريم.
سپس ، از پورت هاي 80 و: 443 هاست Docker خود به همان پورت هاي موجود در كانتينر Traefik ترسيم مي كنيم تا Traefik تمام ترافيك HTTP و HTTPS را به سرور مجازي دريافت كند.
سپس دو برچسب Docker تنظيم مي كنيم كه به Traefik مي گويد كه بايد ترافيك را به سمت نام هاست monitor.your_domain به :8080 درون كانتينر Traefik هدايت كند، كه داشبورد نظارت را نشان مي دهد.
شبكه كانتينر را روي وب تنظيم مي كنيم و كانتينر را traefik نامگذاري مي گذاريم.
سرانجام ، از تصوير traefik: 1.7-alpine براي اين كانتينر استفاده مي كنيم ، زيرا كوچك است.
يك ENTRYPOINT تصوير Docker فرماني است كه هميشه هنگام ايجاد كانتينر از تصوير اجرا مي شود. در اين حالت ، دستور باينري traefik درون كانتينر است. هنگام راه اندازي كانتينر مي توانيد آرگومان هاي ديگري را به آن دستور منتقل كنيد ، اما همه تنظيمات خود را در فايل traefik.toml پيكربندي كرده ايم.
با راه اندازي كانتينر ، اكنون داشبوردي داريد كه مي توانيد براي مشاهده سلامت كانتينرهاي خود به آن دسترسي داشته باشيد. همچنين مي توانيد از اين داشبورد براي تجسم frontends و backends كه Traefik ثبت كرده استفاده كنيد. با رفتن به ادرس https: //monitor.your_domain در مرورگر خود به داشبورد نظارت دسترسي پيدا كنيد. نام كاربري و گذرواژه ادمين و رمز عبوري كه در مرحله 1 پيكربندي كرده ايد ، از شما خواسته مي شود.
پس از ورود به سيستم ، رابط كاربري مشابه اين را مشاهده خواهيد كرد:
چيز چنداني براي مشاهده وجود ندارد ، اما اين پنجره را باز بگذاريد ، و با افزودن كانتينرهايي براي مديريت Traefik ، تغيير محتوا را مشاهده خواهيد كرد.
اكنون پروكسي Traefik در حال اجرا ، پيكربندي شده براي كار با Docker و آماده نظارت بر ساير كانتينرها Docker است. بياييد چند كانتينر براي Traefik به پروكسي اضافه كنيم.
مرحله 3 – ثبت كانتينرها با Traefik
با استفاده از كانتينر Traefik ، آماده اجراي برنامه هايي در وراي آن هستيد. اجازه دهيد كانتينرهاي زير را تحت Traefik راه اندازي كنيم:
1- وبلاگي با استفاده از تصوير رسمي وردپرس.
2- يك سرور مجازي مديريت پايگاه داده با استفاده از تصوير رسمي Adminer.
ما با استفاده از يك فايل docker-compose.yml هر دو اين برنامه ها را با Docker Compose مديريت خواهيم كرد.
فايل docker-compose.yml را در ويرايشگر خود ايجاد و باز كنيد:
- $ nano docker-compose.yml
خطوط زير را به فايل اضافه كنيد تا نسخه و شبكه هايي را كه استفاده خواهيم كرد مشخص كنيد:
docker-compose.yml
version: “3”
networks:
web:
external: true
internal:
external: false
ما از Docker Compose نسخه 3 استفاده مي كنيم زيرا جديدترين نسخه اصلي قالب فايل Compose است.
براي اينكه Traefik برنامه هاي ما را بشناسد ، آنها بايد بخشي از يك شبكه باشند و از آنجا كه ما شبكه را به صورت دستي ايجاد كرده ايم ، با تعيين نام شبكه وب و تنظيم external روي true ، آن را به داخل مي كشيم. سپس يك شبكه ديگر تعريف مي كنيم تا بتوانيم كانتينرهاي در معرض ديد خود را به يك كانتينر پايگاه داده متصل كنيم كه از طريق Traefik در معرض آن قرار نمي گيريم. ما اين شبكه را internalمي ناميم.
در مرحله بعدي ، هر يك از سرويس هاي خود را يك به يك تعريف خواهيم كرد. بياييد با محتواي وبلاگ شروع كنيم ، كه پايه آن را تصوير رسمي وردپرس قرار خواهيم داد. اين پيكربندي را به پايين فايل خود اضافه كنيد:
docker-compose.yml
version: “3”
…
services:
blog:
image: wordpress:4.9.8-apache
environment:
WORDPRESS_DB_PASSWORD:
labels:
– traefik.backend=blog
– traefik.frontend.rule=Host:blog.your_domain
– traefik.docker.network=web
– traefik.port=80
networks:
– internal
– web
depends_on:
– mysql
كليد environment به شما امكان مي دهد متغيرهاي محيطي را كه در داخل كانتينر تنظيم مي شوند ، تعيين كنيد. با تعيين نكردن مقداري براي WORDPRESS_DB_PASSWORD ، به Docker Compose مي گوييم كه هنگام ايجاد كانتينر مقدار را از پوسته ما گرفته و آن را عبور دهد. قبل از شروع كانتينرها ، اين متغير محيط را در پوسته خود تعريف خواهيم كرد. به اين ترتيب گذرواژه هاي محكم كد گذاري شده را در فايل پيكربندي وارد نمي كنيم.
قسمت labels جايي است كه شما مقادير پيكربندي Traefik را تعيين مي كنيد. برچسب هاي Docker به تنهايي كاري انجام نمي دهند ، اما Traefik اين موارد را مي خواند تا بداند چگونه با كانتينرها رفتار كند. آنچه در هر يك از اين برچسب ها انجام مي شود به اين شرح است:
- backend نام سرويس backend را در Traefik مشخص مي كند (كه به كانتينر واقعي blog اشاره دارد).
- frontend.rule=Host:blog.your_domain به Traefik مي گويد كه ميزبان درخواستي را بررسي كند و اگر با الگوي blog.your_domain مطابقت دارد بايد ترافيك را به كانتينر blog هدايت كند.
- docker.network=web مشخص مي كند براي يافتن IP داخلي اين كانتينر در كدام شبكه به دنبال Traefik بگرديد. از آنجا كه كانتينر Traefik ما به تمام اطلاعات Docker دسترسي دارد ، اگر اين مورد را مشخص نكنيم ، احتمالاً IP را براي شبكه داخلي مي گيرد.
- port پورت در معرض مشخصي را مشخص مي كند كه Traefik بايد از آن براي مسير يابي به اين كانتينر استفاده كند.
با استفاده از اين پيكربندي ، تمام ترافيك ارسال شده به پورت 80 ميزبان Docker ما به كانتينر blog هدايت مي شود.
ما اين كانتينر را به دو شبكه مختلف اختصاص مي دهيم تا Traefik بتواند آن را از طريق شبكه وب پيدا كند و بتواند از طريق شبكه داخلي با كانتينر پايگاه داده ارتباط برقرار كند.
سرانجام ، كليد depend_on به Docker Compose مي گويد كه اين كانتينر پس از اجراي متعلقات بايد شروع شود. از آنجا كه وردپرس براي اجرا به يك پايگاه داده احتياج دارد ، ما بايد قبل از شروع محتواي وبلاگ خود ، محتواي mysql خود را اجرا كنيم.
سپس ، با اضافه كردن اين پيكربندي به پايين فايل ، سرويس MySQL را پيكربندي كنيد:
docker-compose.yml
services:
…
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD:
networks:
– internal
labels:
– traefik.enable=false
ما براي اين كانتينر از تصوير رسمي MySQL 5.7 استفاده مي كنيم. مشاهده خواهيد كرد كه بار ديگر از يك آيتم environment بدون مقدار استفاده مي كنيم. متغيرهاي MYSQL_ROOT_PASSWORD و WORDPRESS_DB_PASSWORD بايد در همان مقدار تنظيم شوند تا اطمينان حاصل شود كه كانتينر وردپرس ما مي تواند با MySQL ارتباط برقرار كند. ما نمي خواهيم كانتينر mysql را در معرض Traefik يا جهان خارج قرار دهيم ، بنابراين فقط اين كانتينر را به شبكه داخلي اختصاص مي دهيم. از آنجا كه Traefik به سوكت Docker دسترسي دارد ، اين فرايند همچنان پيش فرض يك كانتينر mysql را نشان مي دهد ، بنابراين ما برچسب traefik.enable = false را اضافه مي كنيم تا مشخص كنيم Traefik نبايد اين كانتينر را نشان دهد.
سرانجام ، اين پيكربندي را به قسمت پايين فايل خود اضافه كنيد تا كانتينر Adminer را تعريف كنيد:
docker-compose.yml
services:
…
adminer:
image: adminer:4.6.3-standalone
labels:
– traefik.backend=adminer
– traefik.frontend.rule=Host:db-admin.your_domain
– traefik.docker.network=web
– traefik.port=8080
networks:
– internal
– web
depends_on:
– mysql
اين كانتينر بر اساس تصوير رسمي ادمين است. پيكربندي network و depends_on براي اين كانتينر دقيقاً با آنچه براي كانتينر blog استفاده مي كنيم مطابقت دارد.
با اين حال ، از آنجا كه همه ترافيك را به پورت 80 هاست Docker خود مستقيماً به كانتينر blog هدايت مي كنيم ، بايد اين كانتينر را به گونه ديگري پيكربندي كنيم تا ترافيك به كانتينر ادمين ما برسد. traefik.frontend.rule=Host:db-admin.your_domain به Traefik مي گويد هاست درخواستي را بررسي كند. اگر با الگوي db-admin.your_domain مطابقت داشته باشد ، Traefik ترافيك را به سمت كانتينر مدير هدايت مي كند.
در اين مرحله ، docker-compose.yml بايد داراي محتواي زير باشد:
docker-compose.yml
version: “3”
networks:
web:
external: true
internal:
external: false
services:
blog:
image: wordpress:4.9.8-apache
environment:
WORDPRESS_DB_PASSWORD:
labels:
– traefik.backend=blog
– traefik.frontend.rule=Host:blog.your_domain
– traefik.docker.network=web
– traefik.port=80
networks:
– internal
– web
depends_on:
– mysql
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD:
networks:
– internal
labels:
– traefik.enable=false
adminer:
image: adminer:4.6.3-standalone
labels:
– traefik.backend=adminer
– traefik.frontend.rule=Host:db-admin.your_domain
– traefik.docker.network=web
– traefik.port=8080
networks:
– internal
– web
depends_on:
– mysql
فايل را ذخيره كرده و از ويرايشگر متن خارج شويد.
سپس ، مقادير را براي پوسته خود براي متغيرهاي WORDPRESS_DB_PASSWORD و MYSQL_ROOT_PASSWORD قبل از شروع كانتينرها خود تنظيم كنيد:
- $ export WORDPRESS_DB_PASSWORD=secure_database_password
- $ export MYSQL_ROOT_PASSWORD=secure_database_password
secure_database_password را با گذرواژه پايگاه داده مورد نظر خود جايگزين كنيد. فراموش نكنيد كه براي هر دو WORDPRESS_DB_PASSWORD و MYSQL_ROOT_PASSWORD از رمز عبور يكساني استفاده كنيد.
با تنظيم اين متغيرها ، كانتينرها را با استفاده از docker-compose اجرا كنيد:
- $ docker-compose up -d
اكنون نگاهي دوباره به داشبورد مديريت Traefik بيندازيد. خواهيد ديد كه اكنون يك backend و frontend براي دو سرور مجازي وجود دارد:
به blog.your_domain خود برويد. به يك اتصال TLS هدايت خواهيد شد و اكنون مي توانيد تنظيمات WordPress را انجام دهيد:
اكنون با مراجعه به db-admin.your_domain در مرورگر خود ، به Adminer دسترسي پيدا كنيد و your_domain را دوباره با دامنه خود جايگزين كنيد. كانتينر mysql در معرض دنياي خارج نيست ، اما كانتينر adminer از طريق شبكه داخلي Docker كه با استفاده از نام كانتينر mysql به عنوان نام هاست به آن استفاده ميكنند ، دسترسي دارد.
در صفحه ورود به سيستم Adminer ، از ROOT به عنوان نام كاربري، MySQL براي سرور مجازي استفاده كنيد. و مقداري را كه براي MYSQL_ROOT_PASSWORD تعيين كرده ايد براي رمز عبور وارد كنيد. پس از ورود به سيستم ، رابط كاربري Adminer را مشاهده خواهيد كرد:
هر دو سايت اكنون كار مي كنند و شما مي توانيد از داشبورد موجود در monitor.your_domain استفاده كنيد تا برنامه هاي خود را تحت نظر داشته باشيد.
نتيجه
در اين آموزش ، Traefik را به درخواست پروكسي از برنامه هاي ديگر در كانتينرهاي Docker پيكربندي كرده ايد.
پيكربندي اعلاني Traefik در سطح كانتينر برنامه ، پيكربندي سرويس هاي بيشتر را آسان مي كند و هنگام افزودن برنامه هاي جديد به ترافيك پروكسي ، نيازي به راه اندازي مجدد كانتينر traefik نيست زيرا Traefik بلافاصله از طريق فايل سوكت Docker كه در حال كنترل است، متوجه تغيير مي شود.
براي كسب اطلاعات بيشتر در مورد آنچه مي توانيد با Traefik انجام دهيد ، به مطالب رسمي Traefik مراجعه كنيد.
خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان –
برچسب: ،
ادامه مطلب