Thứ sáu, 30/10/2020 | 00:00 GMT+7

Cách sử dụng Traefik v2 làm Reverse Proxy cho Docker Containers trên Ubuntu 20.04

Docker có thể là một cách hiệu quả để chạy các ứng dụng web trong production , nhưng bạn có thể cần chạy nhiều ứng dụng trên cùng một server Docker. Trong trường hợp này, bạn cần cài đặt một Reverse Proxy . Điều này là do bạn chỉ muốn hiển thị cổng 80443 với phần còn lại của thế giới.

Traefik là một Reverse Proxy nhận biết Docker bao gồm một console giám sát. Traefik v1 đã được sử dụng rộng rãi trong một thời gian và bạn có thể làm theo hướng dẫn trước đó để cài đặt Traefik v1 ). Nhưng trong hướng dẫn này, bạn sẽ cài đặt và cấu hình Traefik v2, bao gồm một số điểm khác biệt.

Sự khác biệt lớn nhất giữa Traefik v1 và v2 là giao diện user backend đã bị loại bỏ và chức năng kết hợp của chúng trải rộng trên các bộ định tuyến , phần mềm trung giandịch vụ . Trước đây, một chương trình backend thực hiện công việc sửa đổi các yêu cầu và nhận yêu cầu đó đến bất cứ thứ gì được cho là xử lý nó. Traefik v2 cung cấp nhiều mối quan tâm hơn bằng cách giới thiệu phần mềm trung gian có thể sửa đổi các yêu cầu trước khi gửi chúng đến một dịch vụ. Phần mềm trung gian giúp dễ dàng chỉ định một bước sửa đổi duy nhất được dùng bởi nhiều tuyến đường khác nhau để chúng được dùng lại (chẳng hạn như HTTP Basic Auth, bạn sẽ thấy sau). Một bộ định tuyến cũng có thể sử dụng nhiều phần mềm trung gian khác nhau.

Trong hướng dẫn này, bạn sẽ cấu hình Traefik v2 để định tuyến các yêu cầu đến hai containers ứng dụng web khác nhau: containers Wordpressvùng chứa Adminer , mỗi vùng nói chuyện với sở dữ liệu MySQL . Bạn sẽ cấu hình Traefik để phân phát mọi thứ qua HTTPS bằng Let's Encrypt .

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần những thứ sau:

Bước 1 - Cấu hình và chạy Traefik

Dự án Traefik có Docker image chính thức , vì vậy bạn sẽ sử dụng hình ảnh đó để chạy Traefik trong containers Docker.

Nhưng trước khi cài đặt và chạy containers Traefik, bạn cần tạo file cấu hình và cài đặt password được mã hóa để có thể truy cập trang tổng quan giám sát.

Bạn sẽ sử dụng trình htpasswd để tạo password được mã hóa này. Đầu tiên, hãy cài đặt tiện ích có trong gói apache2-utils :

  • sudo apt-get install apache2-utils

Sau đó tạo password bằng htpasswd . Thay thế secure_password bằng password bạn muốn sử dụng cho admin-user Traefik:

  • htpasswd -nb admin secure_password

Kết quả kết quả từ chương trình sẽ như sau:

Output
admin:$apr1$ruca84Hq$mbjdMZBAG.KWn7vfN/SNK/

Bạn sẽ sử dụng kết quả này trong file cấu hình Traefik để cài đặt Xác thực cơ bản HTTP cho trang tổng quan giám sát và kiểm tra tình trạng Traefik. Sao chép toàn bộ dòng kết quả để bạn có thể dán nó sau này.

Để cấu hình server Traefik, bạn sẽ tạo hai file cấu hình mới có tên traefik.tomltraefik_dynamic.toml bằng cách sử dụng định dạng TOML. TOML là một ngôn ngữ cấu hình tương tự như các file INI, nhưng được tiêu chuẩn hóa. Những file này cho phép ta cấu hình server Traefik và các tích hợp hoặc providers khác nhau mà bạn muốn sử dụng. Trong hướng dẫn này, bạn sẽ sử dụng ba nhà cung cấp có sẵn của Traefik: api , dockeracme . Cái cuối cùng trong số này, acme , hỗ trợ certificate TLS bằng Let's Encrypt.

Tạo và mở traefik.toml bằng nano hoặc editor bạn muốn :

  • nano traefik.toml

Trước tiên, bạn muốn chỉ định các cổng mà Traefik sẽ lắng nghe bằng cách sử dụng phần entryPoints trong file cấu hình của bạn. Bạn muốn hai vì bạn muốn nghe trên cổng 80443 . Hãy gọi chúng là web (cổng 80 ) và websecure (cổng 443 ).

Thêm các cấu hình sau:

traefik.toml
[entryPoints]   [entryPoints.web]     address = ":80"     [entryPoints.web.http.redirections.entryPoint]       to = "websecure"       scheme = "https"    [entryPoints.websecure]     address = ":443" 

Lưu ý bạn cũng đang tự động chuyển hướng truy cập được xử lý qua TLS.

Tiếp theo, cấu hình api Traefik, cho phép bạn truy cập vào cả API và giao diện trang tổng quan của bạn. Tiêu đề của [api] là tất cả những gì bạn cần vì trang tổng quan sau đó được bật theo mặc định, nhưng bạn sẽ rõ ràng vào lúc này.

Thêm mã sau:

traefik.toml
... [api]   dashboard = true 

Để hoàn tất việc bảo mật các yêu cầu web của bạn, bạn muốn sử dụng Let's Encrypt để tạo certificate TLS hợp lệ. Traefik v2 hỗ trợ Let's Encrypt out of the box và bạn có thể cấu hình nó bằng cách tạo trình phân giải certificate loại acme .

Hãy cấu hình trình phân giải certificate của bạn ngay bây giờ bằng cách sử dụng tên lets-encrypt :

traefik.toml
... [certificatesResolvers.lets-encrypt.acme]   email = "your_email@your_domain"   storage = "acme.json"   [certificatesResolvers.lets-encrypt.acme.tlsChallenge] 

Phần này được gọi là acmeACME là tên của giao thức được sử dụng để giao tiếp với Let's Encrypt để quản lý certificate . Dịch vụ Encrypt của Hãy yêu cầu đăng ký với một địa chỉ email hợp lệ, vì vậy để có Traefik tạo certificate cho server của bạn, cài đặt các email quan trọng để địa chỉ email của bạn. Sau đó, bạn chỉ định rằng bạn sẽ lưu trữ thông tin mà bạn sẽ nhận được từ Let's Encrypt trong một file JSON có tên là acme.json .

Phần acme.tlsChallenge cho phép ta chỉ định cách Let's Encrypt có thể xác minh certificate đó. Bạn đang cấu hình nó để phân phát file như một phần của thử thách qua cổng 443 .

Cuối cùng, bạn cần cấu hình Traefik để hoạt động với Docker.

Thêm các cấu hình sau:

traefik.toml
... [providers.docker]   watch = true   network = "web" 

Các docker cung cấp dịch vụ cho phép Traefik để hoạt động như một proxy trước container Docker. Bạn đã cấu hình nhà cung cấp để watch các containers mới trên mạng web mà bạn sẽ sớm tạo ra.

Cấu hình cuối cùng của ta sử dụng trình cung cấp file . Với Traefik v2, các cấu hình tĩnh và động không thể trộn lẫn và trùng với nhau. Để giải quyết vấn đề này, bạn sẽ sử dụng traefik.toml để xác cấu hình tĩnh và sau đó giữ cấu hình động của bạn trong một file khác, mà bạn sẽ gọi là traefik_dynamic.toml . Ở đây, bạn đang sử dụng trình cung cấp file để cho Traefik biết rằng nó sẽ đọc trong cấu hình động từ một file khác.

Thêm nhà cung cấp file sau:

traefik.toml
  • [providers.file]
  • filename = "traefik_dynamic.toml"

traefik.toml đã hoàn thành của bạn sẽ trông như thế này:

traefik.toml
[entryPoints]   [entryPoints.web]     address = ":80"     [entryPoints.web.http.redirections.entryPoint]       to = "websecure"       scheme = "https"    [entryPoints.websecure]     address = ":443"  [api]   dashboard = true  [certificatesResolvers.lets-encrypt.acme]   email = "your_email@your_domain"   storage = "acme.json"   [certificatesResolvers.lets-encrypt.acme.tlsChallenge]  [providers.docker]   watch = true   network = "web"  [providers.file]   filename = "traefik_dynamic.toml" 

Lưu và đóng file .

Bây giờ hãy tạo traefik_dynamic.toml .

Các giá trị cấu hình động mà bạn cần giữ trong file riêng của chúng là phần mềm trung gianbộ định tuyến . Để đặt trang tổng quan của bạn đằng sau password , bạn cần tùy chỉnh bộ định tuyến của API và cấu hình phần mềm trung gian để xử lý xác thực cơ bản HTTP. Hãy bắt đầu bằng cách cài đặt phần mềm trung gian.

Phần mềm trung gian được cấu hình trên cơ sở mỗi giao thức và vì bạn đang làm việc với HTTP, nên bạn sẽ chỉ định nó như một phần được liên kết với http.middlewares . Tiếp theo là tên của phần mềm trung gian của bạn để bạn có thể tham khảo nó sau này, tiếp theo là loại phần mềm trung gian, trong trường hợp này sẽ là basicAuth . Hãy gọi phần mềm trung gian của bạn là simpleAuth .

Tạo và mở một file mới có tên traefik_dynamic.toml :

  • nano traefik_dynamic.toml

Thêm mã sau. Đây là nơi bạn sẽ dán kết quả từ lệnh htpasswd :

traefik_dynamic.toml
[http.middlewares.simpleAuth.basicAuth]   users = [     "admin:$apr1$ruca84Hq$mbjdMZBAG.KWn7vfN/SNK/"   ] 

Để cấu hình bộ định tuyến cho api, bạn sẽ tách tên giao thức ra, nhưng thay vì sử dụng http.middlewares , bạn sẽ sử dụng http.routers theo sau là tên của bộ định tuyến. Trong trường hợp này, api cung cấp bộ định tuyến được đặt tên riêng mà bạn có thể cấu hình bằng cách sử dụng phần [http.routers.api] . Bạn cũng sẽ cấu hình domain mà bạn định sử dụng với trang tổng quan của bạn bằng cách đặt khóa rule bằng cách sử dụng kết hợp server , điểm nhập để sử dụng websecure và phần mềm trung gian để bao gồm simpleAuth .

Thêm các cấu hình sau:

traefik_dynamic.toml
... [http.routers.api]   rule = "Host(`monitor.your_domain`)"   entrypoints = ["websecure"]   middlewares = ["simpleAuth"]   service = "api@internal"   [http.routers.api.tls]     certResolver = "lets-encrypt" 

Các web entry xử lý điểm cổng 80 , trong khi websecure điểm vào sử dụng cổng 443 cho TLS / SSL. Bạn tự động chuyển hướng tất cả lưu lượng trên cổng 80 đến điểm nhập websecure để buộc các kết nối an toàn cho tất cả các yêu cầu.

Lưu ý ba dòng cuối cùng ở đây cấu hình dịch vụ , bật certResolver và cấu hình certResolver thành "lets-encrypt" certResolver "lets-encrypt" . Dịch vụ là bước cuối cùng để xác định nơi một yêu cầu cuối cùng được xử lý. Dịch vụ api@internal là một dịch vụ tích hợp nằm sau API mà bạn để lộ. Cũng giống như bộ định tuyến và phần mềm trung gian, các dịch vụ có thể được cấu hình trong file này, nhưng bạn sẽ không cần phải làm điều đó để đạt được kết quả mong muốn.

Tệp traefik_dynamic.toml đã hoàn thành của bạn sẽ giống như sau:

traefik_dynamic.toml
[http.middlewares.simpleAuth.basicAuth]   users = [     "admin:$apr1$ruca84Hq$mbjdMZBAG.KWn7vfN/SNK/"   ]  [http.routers.api]   rule = "Host(`your_domain`)"   entrypoints = ["websecure"]   middlewares = ["simpleAuth"]   service = "api@internal"   [http.routers.api.tls]     certResolver = "lets-encrypt" 

Lưu file và thoát khỏi editor .

Với các cấu hình này, bây giờ bạn sẽ bắt đầu Traefik.

Bước 2 - Chạy Traefik Container

Trong bước này, bạn sẽ tạo một mạng Docker để proxy chia sẻ với các containers . Sau đó, bạn sẽ truy cập vào console Traefik. Mạng Docker là cần thiết để bạn có thể sử dụng nó với các ứng dụng đang chạy bằng Docker Compose.

Tạo một mạng Docker mới có tên là web :

  • docker network create web

Khi containers Traefik bắt đầu, bạn sẽ thêm nó vào mạng này. Sau đó, bạn có thể thêm các containers bổ sung vào mạng này sau đó để Traefik ủy quyền.

Tiếp theo, tạo một file trống chứa thông tin Let's Encrypt của bạn. Bạn sẽ chia sẻ nó vào containers để Traefik có thể sử dụng nó:

  • touch acme.json

Traefik sẽ chỉ có thể sử dụng file này nếu user root bên trong containers có quyền truy cập đọc và ghi duy nhất vào nó. Để thực hiện việc này, hãy khóa các quyền trên acme.json để chỉ chủ sở hữu của file mới có quyền đọc và ghi.

  • chmod 600 acme.json

Khi file được chuyển đến Docker, chủ sở hữu sẽ tự động thay đổi thành user root bên trong containers .

Cuối cùng, tạo containers Traefik bằng lệnh này:

  • docker run -d \
  • -v /var/run/docker.sock:/var/run/docker.sock \
  • -v $PWD/traefik.toml:/traefik.toml \
  • -v $PWD/traefik_dynamic.toml:/traefik_dynamic.toml \
  • -v $PWD/acme.json:/acme.json \
  • -p 80:80 \
  • -p 443:443 \
  • --network web \
  • --name traefik \
  • traefik:v2.2

Lệnh này hơi dài. Hãy phá vỡ nó.

Bạn sử dụng cờ -d để chạy containers trong nền dưới dạng daemon. Sau đó, bạn chia sẻ file docker.sock của bạn vào containers để quy trình Traefik có thể lắng nghe các thay đổi đối với containers . Bạn cũng chia sẻ traefik.tomltraefik_dynamic.toml file cấu hình vào container, cũng như acme.json .

Tiếp theo, bạn ánh xạ các cổng :80:443 của server lưu trữ Docker của bạn với các cổng giống nhau trong containers Traefik để Traefik nhận tất cả truy cập HTTP và HTTPS đến server .

Bạn đặt mạng của các container để web , và bạn tên cho containers traefik .

Cuối cùng, bạn sử dụng hình ảnh traefik:v2.2 cho containers này để bạn có thể đảm bảo bạn không chạy một version hoàn toàn khác với hướng dẫn này được viết cho.

ENTRYPOINT của Docker image là lệnh luôn chạy khi containers được tạo từ hình ảnh . Trong trường hợp này, lệnh là binary traefik trong containers . Bạn có thể chuyển các đối số bổ sung cho lệnh đó khi chạy containers , nhưng bạn đã cấu hình tất cả cài đặt của bạn trong file traefik.toml .

Khi containers được khởi động, bây giờ bạn có một trang tổng quan mà bạn có thể truy cập để xem tình trạng của containers của bạn . Bạn cũng có thể sử dụng console này để trực quan hóa các bộ định tuyến, dịch vụ và phần mềm trung gian mà Traefik đã đăng ký. Bạn có thể cố gắng truy cập trang tổng quan giám sát bằng cách trỏ trình duyệt của bạn tới https://monitor. your_domain /dashboard/ (dấu / là bắt buộc).

Bạn sẽ được yêu cầu nhập tên user và password của bạn , đó là administrator và password bạn đã cấu hình ở Bước 1.

Sau khi đăng nhập, bạn sẽ thấy giao diện Traefik:

Trang tổng quan Traefik trống

Bạn sẽ nhận thấy rằng đã có một số bộ định tuyến và dịch vụ được đăng ký, nhưng đó là những bộ định tuyến đi kèm với Traefik và cấu hình bộ định tuyến mà bạn đã viết cho API.

Đến đây bạn có proxy Traefik của bạn đang chạy và bạn đã cấu hình nó để hoạt động với Docker và giám sát các containers khác. Trong bước tiếp theo, bạn sẽ bắt đầu một số containers để Traefik làm proxy.

Bước 3 - Đăng ký containers với Traefik

Với containers Traefik đang chạy, bạn đã sẵn sàng chạy các ứng dụng đằng sau nó. Hãy chạy các containers sau Traefik:

  1. Một blog sử dụng hình ảnh WordPress chính thức .
  2. Server quản lý database sử dụng hình ảnh Adminer chính thức .

Bạn sẽ quản lý cả hai ứng dụng này với Docker Compose bằng cách sử dụng file docker-compose.yml .

Tạo và mở file docker-compose.yml trong editor :

  • nano docker-compose.yml

Thêm các dòng sau vào file để chỉ định version và mạng bạn sẽ sử dụng:

docker-compos.yml
version: "3"  networks:   web:     external: true   internal:     external: false 

Bạn sử dụng Docker Compose version 3 vì đây là version chính mới nhất của định dạng file Compose.

Để Traefik nhận ra các ứng dụng của bạn, chúng phải là một phần của cùng một mạng và vì bạn đã tạo mạng theo cách thủ công, bạn kéo nó vào bằng cách chỉ định tên mạng của web và đặt external thành true . Sau đó, bạn xác định một mạng khác để bạn có thể kết nối các containers được tiếp xúc với một containers database mà bạn sẽ không hiển thị thông qua Traefik. Bạn sẽ gọi mạng này là internal .

Tiếp theo, bạn sẽ xác định từng services của bạn , từng services một. Hãy bắt đầu với containers blog , bạn sẽ dựa trên hình ảnh WordPress chính thức. Thêm cấu hình này vào cuối file :

docker-compos.yml
...  services:   blog:     image: wordpress:4.9.8-apache     environment:       WORDPRESS_DB_PASSWORD:     labels:       - traefik.http.routers.blog.rule=Host(`blog.your_domain`)       - traefik.http.routers.blog.tls=true       - traefik.http.routers.blog.tls.certresolver=lets-encrypt       - traefik.port=80     networks:       - internal       - web     depends_on:       - mysql 

Khóa environment cho phép bạn chỉ định các biến môi trường sẽ được đặt bên trong containers . Bằng cách không đặt giá trị cho WORDPRESS_DB_PASSWORD , bạn đang yêu cầu Docker Compose lấy giá trị từ shell của bạn và chuyển nó qua khi bạn tạo containers . Bạn sẽ xác định biến môi trường này trong shell của bạn trước khi bắt đầu các containers . Bằng cách này, bạn không đặt password vào file cấu hình.

Phần labels là nơi bạn chỉ định các giá trị cấu hình cho Traefik. Các nhãn Docker không tự làm bất cứ điều gì, nhưng Traefik đọc những thứ này để biết cách xử lý containers . Đây là những gì mỗi nhãn này thực hiện:

  • traefik.http.routers.adminer.rule=Host( ` blog. your_domain ` ) tạo ra một router mới cho container của bạn và sau đó xác định luật định tuyến sử dụng để xác định xem một yêu cầu phù hợp với container này.
  • traefik.routers. custom_name .tls=true chỉ định rằng bộ định tuyến này nên sử dụng TLS.
  • traefik.routers. custom_name .tls.certResolver=lets-encrypt quy định cụ thể rằng giấy chứng nhận phân giải mà bạn đã tạo trước đó gọi là lets-encrypt nên được sử dụng để có được một giấy chứng nhận cho tuyến đường này.
  • traefik.port chỉ định cổng tiếp xúc mà Traefik nên sử dụng để định tuyến lưu lượng truy cập đến containers này.

Với cấu hình này, tất cả truy cập được gửi tới server lưu trữ Docker của bạn trên cổng 80 hoặc 443 với domain blog. your_domain sẽ được chuyển đến containers blog .

Bạn chỉ định containers này cho hai mạng khác nhau để Traefik có thể tìm thấy nó qua mạng web và nó có thể giao tiếp với containers database thông qua mạng internal .

Cuối cùng, khóa depends_on nói với Docker Compose rằng containers này cần bắt đầu sau khi các depends_on phụ thuộc của nó đang chạy. Vì WordPress cần một database để chạy, bạn phải chạy containers mysql trước khi bắt đầu containers blog của blog .

Tiếp theo, cấu hình dịch vụ MySQL:

docker-compos.yml
services: ...   mysql:     image: mysql:5.7     environment:       MYSQL_ROOT_PASSWORD:     networks:       - internal     labels:       - traefik.enable=false 

Bạn đang sử dụng hình ảnh MySQL 5.7 chính thức cho containers này. Bạn sẽ nhận thấy rằng bạn đang sử dụng một mục environment không có giá trị. Các MYSQL_ROOT_PASSWORDWORDPRESS_DB_PASSWORD cần được đặt thành cùng một giá trị đảm bảo rằng containers WordPress của bạn có thể giao tiếp với MySQL. Bạn không muốn hiển thị containers mysql với Traefik hoặc thế giới bên ngoài, vì vậy bạn chỉ gán containers này cho mạng internal . Vì Traefik có quyền truy cập vào Docker socket, theo mặc định, quy trình sẽ vẫn hiển thị một bộ định tuyến cho containers mysql , vì vậy bạn sẽ thêm nhãn traefik.enable=false để chỉ định rằng Traefik sẽ không để lộ containers này.

Cuối cùng, xác định containers Adminer:

docker-compos.yml
services: ...   adminer:     image: adminer:4.6.3-standalone     labels:       - traefik.http.routers.adminer.rule=Host(`db-admin.your_domain`)       - traefik.http.routers.adminer.tls=true       - traefik.http.routers.adminer.tls.certresolver=lets-encrypt       - traefik.port=8080     networks:       - internal       - web     depends_on:       - mysql 

Vùng chứa này dựa trên hình ảnh Adminer chính thức. Cấu hình networkdepends_on cho containers này khớp chính xác với những gì bạn đang sử dụng cho containers blog .

Dòng traefik.http.routers.adminer.rule=Host( ` db-admin. your_domain ` ) kể Traefik để kiểm tra server yêu cầu. Nếu nó trùng với mẫu của db-admin. your_domain , Traefik sẽ định tuyến lưu lượng truy cập đến containers adminer qua cổng 8080 .

Tệp docker-compose.yml đã hoàn thành của bạn sẽ trông giống như sau:

docker-compos.yml
version: "3"  networks:   web:     external: true   internal:     external: false  services:   blog:     image: wordpress:4.9.8-apache     environment:       WORDPRESS_DB_PASSWORD:     labels:       - traefik.http.routers.blog.rule=Host(`blog.your_domain`)       - traefik.http.routers.blog.tls=true       - traefik.http.routers.blog.tls.certresolver=lets-encrypt       - 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:     labels:       - traefik.http.routers.adminer.rule=Host(`db-admin.your_domain`)       - traefik.http.routers.adminer.tls=true       - traefik.http.routers.adminer.tls.certresolver=lets-encrypt       - traefik.port=8080     networks:       - internal       - web     depends_on:       - mysql 

Lưu file và thoát khỏi editor .

Tiếp theo, đặt giá trị trong shell của bạn cho các WORDPRESS_DB_PASSWORDMYSQL_ROOT_PASSWORD :

  • export WORDPRESS_DB_PASSWORD=secure_database_password
  • export MYSQL_ROOT_PASSWORD=secure_database_password

Thay thế secure_database_password bằng password database mong muốn của bạn. Hãy nhớ sử dụng cùng một password cho cả WORDPRESS_DB_PASSWORDMYSQL_ROOT_PASSWORD .

Với các biến này đã được đặt, hãy chạy các containers bằng cách sử dụng docker-compose :

  • docker-compose up -d

Bây giờ hãy xem trang tổng quan quản trị Traefik trong khi nó được điền.

 Control panel  Traefik được phổ biến

Nếu bạn khám phá phần Bộ định tuyến , bạn sẽ tìm thấy bộ định tuyến cho adminerblog cấu hình bằng TLS:

Bộ định tuyến HTTP w / TLS

Điều hướng đến blog. your_domain , thay thế your_domain bằng domain của bạn. Bạn sẽ được chuyển hướng đến kết nối TLS và bây giờ bạn có thể hoàn tất cài đặt WordPress:

Màn hình  cài đặt  WordPress

Bây giờ truy cập Adminer bằng cách truy cập db-admin. your_domain trong trình duyệt của bạn, lại thay thế your_domain bằng domain của bạn. Vùng chứa mysql không được tiếp xúc với thế giới bên ngoài, nhưng containers adminer có quyền truy cập vào nó thông qua mạng Docker internal mà chúng chia sẻ bằng cách sử dụng tên containers mysql làm tên server .

Trên màn hình đăng nhập Adminer, nhập root cho Tên user , nhập mysql cho Server và nhập giá trị bạn đặt cho MYSQL_ROOT_PASSWORD cho Mật khẩu . Để trống Database . Bây giờ nhấn Đăng nhập .

Sau khi đăng nhập, bạn sẽ thấy giao diện user Adminer.

Adminer được kết nối với database  MySQL

Cả hai trang web hiện đang hoạt động và bạn có thể sử dụng console tại monitor. your_domain để theo dõi các ứng dụng của bạn.

Kết luận

Trong hướng dẫn này, bạn đã cấu hình Traefik v2 cho các yêu cầu proxy tới các ứng dụng khác trong containers Docker.

Cấu hình khai báo của Traefik ở cấp containers ứng dụng giúp bạn dễ dàng cấu hình nhiều dịch vụ hơn và không cần khởi động lại containers traefik khi bạn thêm ứng dụng mới vào lưu lượng proxy vì Traefik nhận thấy các thay đổi ngay lập tức thông qua file socket Docker mà nó đang theo dõi.

Để tìm hiểu thêm về những gì bạn có thể làm với Traefik v2, hãy xem tài liệu Traefik chính thức .


Tags:

Các tin liên quan

Cách sử dụng Traefik làm Reverse Proxy cho Docker Containers trên Ubuntu 18.04
2020-10-27
Cách sử dụng Traefik làm Reverse Proxy cho Docker Containers trên Ubuntu 20.04
2020-10-27
Cách tự động hóa thiết lập Jenkins với cấu hình Docker và Jenkins dưới dạng mã
2020-09-29
Cách phát triển trang web Drupal 9 trên máy cục bộ của bạn bằng Docker và DDEV
2020-08-12
Cách truy cập từ xa các ứng dụng GUI bằng Docker và Caddy trên Ubuntu 18.04
2020-08-07
Cách truy cập từ xa các ứng dụng GUI bằng Docker và Caddy trên Debian 9
2020-08-07
Cách truy cập từ xa các ứng dụng GUI bằng Docker và Caddy trên Debian 10
2020-08-07
Cách loại bỏ image Docker, container và khối lượng
2020-08-06
Cách truy cập từ xa các ứng dụng GUI bằng Docker và Caddy trên Ubuntu 20.04
2020-08-04
Cách mở rộng và bảo mật một ứng dụng Django với Docker, Nginx và Let's Encrypt
2020-07-10