Điểm:0

Docker+Synapse+Traefik v2 ngừng hoạt động khi tôi tạo một mạng phụ trợ riêng

lá cờ ch

Tôi đang cố gắng thiết lập máy chủ Matrix Synapse bằng Docker và proxy ngược Traefik v2.

Thiết lập của tôi hoạt động nếu tôi xác định một mạng duy nhất trong tệp docker-compose của mình và có Traefik, Synapse và postgres đều sử dụng mạng đó.

Tuy nhiên, dựa trên những gì tôi đã học được về Docker cho đến nay, tôi nên đặt postgres trên một mạng riêng (ủng hộ) so với Traefik (trang web). Synapse sau đó sẽ có trên cả hai mạng. Tuy nhiên, khi tôi làm như vậy, tôi không thể kết nối với Synapse nữa. Nó lần ra cuối cùng nói Cổng Time-out.

Như thể Synapse chỉ lắng nghe trên phụ trợ mạng.

phiên bản: '3.2'
dịch vụ:
  khớp thần kinh:
    container_name: khớp thần kinh
    tên máy chủ: ${MATRIX_HOSTNAME}
    hình ảnh: docker.io/matrixdotorg/synapse:latest
    khởi động lại: trừ khi dừng
    môi trường:
      - SYNAPSE_SERVER_NAME=${MATRIX_HOSTNAME}
      - SYNAPSE_REPORT_STATS=có
      - SYNAPSE_NO_TLS=1
      - SYNAPSE_ENABLE_REGISTRATION=không
      - SYNAPSE_LOG_LEVEL=GỠ LỖI
      - SYNAPSE_REGISTRATION_SHARED_SECRET=${REG_SHARED_SECRET}
      - POSTGRES_DB=khớp thần kinh
      - POSTGRES_HOST=db
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    # lộ ra: 
    # - "8008"
    khối lượng:
      - loại: ràng buộc
        nguồn: /opt/services/synapse
        mục tiêu: /dữ liệu
    phụ thuộc:
      - db
    mạng:
      - mạng
      - phụ trợ
    nhãn:
      - "traefik.enable=true"
      - "traefik.http.routers.synapse.rule=Host(`${MATRIX_HOSTNAME}`)"
      - "traefik.http.services.synapse.loadbalancer.server.port=8008"
      - "traefik.http.routers.synapse.entrypoints=websecure"
      - "traefik.http.routers.synapse.tls.certresolver=myresolver"
      - "traefik.docker.network=web"

  đb:
    hình ảnh: docker.io/postgres:10-alpine
    container_name: "synapse_db"
    khởi động lại: trừ khi dừng
    môi trường:
      - POSTGRES_DB=khớp thần kinh
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    khối lượng:
      - /opt/services/synapse_db:/var/lib/postgresql/data
    mạng:
      - phụ trợ
    nhãn:
      - "traefik.enable=false"
  
  traefik:
    hình ảnh: traefik:v2.5
    container_name: "traefik"
    chỉ huy: 
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--providers.docker.network=web"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
      - "--certertresolvers.myresolver.acme.email=${CERTBOT_EMAIL}"
      - "--certertresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    cổng:
      # Bộ định tuyến chuyển tiếp 443 trên WAN thành 8443 trên máy chủ nên chúng tôi không cần quyền root
      - "8443:443"
      - "8080:8080"
    mạng:
      - mạng
    khối lượng:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./letsencrypt:/letsencrypt"
    khởi động lại:
      trừ khi dừng lại

mạng:
  web:
  phụ trợ:

Và trong Synapse máy chủ nhà.yaml tệp, có một phần có thể cho phép tôi liên kết với một giao diện cụ thể, nhưng tôi chưa thực hiện bất kỳ thay đổi nào nên nó sẽ nghe trên tất cả các giao diện theo mặc định:

người nghe:
  - cổng: 8008
    tls: sai
    loại: http
    x_forwarded: đúng

    tài nguyên:
      # - tên: [khách hàng, liên đoàn]
      - tên: [khách hàng]
        nén: sai

Nếu tôi chuyển xuống một thiết lập mạng duy nhất thì nó hoạt động. Tôi đang làm gì sai với hai thiết lập mạng?

Điểm:1
lá cờ co

Traefik không biết nên thử kết nối IP nào của vùng chứa. Bạn thân thiết với traefik.docker.network=web nhưng đó không thực sự là tên của mạng. Mạng sẽ nhận được tiền tố cho tên dự án hoặc ngăn xếp.

Để mã cứng tên mạng, bạn có thể sử dụng trường tên trong phần mạng cuối cùng (phần này dành riêng cho phiên bản 3.5 trở lên):

phiên bản '3.5'
dịch vụ:
  ...
mạng:
  web:
    tên: web
  phụ trợ:

Nếu không, hãy đặt dự án trong nhãn của bạn (đây thường là tên thư mục hiện tại khi sử dụng soạn thảo docker):

 nhãn:
 ...
  - "traefik.docker.network=your_project_name_here_web"
lá cờ ch
Điều đó có ý nghĩa, cảm ơn bạn. Tôi cho rằng tên web cần được cập nhật trong cả đối số dòng lệnh thành traefik cũng như nhãn trong khớp thần kinh?
lá cờ co
@TimMB nhãn sẽ ghi đè đối số traefik CLI, nhưng vâng, bạn nên làm cho tất cả chúng khớp với nhau.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.