Điểm:0

Bộ chứa Docker PHP-FPM hoạt động khác nhau đối với công cụ (docker-compose vs Swarm)

lá cờ fr

một bộ chứa PHP-FPM (7.2), thành viên của ngăn xếp LAPP cổ điển, hiển thị chính xác cổng 9000 khi được khởi chạy với soạn thảo docker nhưng không có gì khi bắt đầu bởi Docker Swarm. Tôi có nên đề cập rằng vùng chứa đang chạy (xem đầu ra bên dưới) và tôi có thể khởi chạy lệnh TTY bash trên đó không.

Vì vậy soạn thảo docker, ứng dụng web có đầy đủ chức năng, nhưng với Swarm, Apache đưa ra Dịch vụ 503 Không khả dụng. Không có gì thay đổi giữa các thử nghiệm với các động cơ khác nhau. Bạn có bất cứ đầu mối về hành vi này?

docker-compose.yml

phiên bản: '3.5'
dịch vụ:
  postgres:
    env_file: ./.env
    hình ảnh: "postgres:9.5.24"
    khối lượng:
      - cơ sở dữ liệu:/var/lib/postgresql/data
    mạng:
      - nội bộ

  quản trị viên:
    hình ảnh: quản trị viên
    mạng:
      - nội bộ
      - traefik-public
    triển khai:
      nhãn:
        - "traefik.enable=true"
        - "traefik.http.routers.adminer.rule=Host(`adminer.example.com`)"
        - "traefik.http.routers.adminer.entrypoints=websecure"
        - "traefik.http.routers.adminer.tls.certresolver=letsencryptresolver"
        - "traefik.http.services.adminer.loadbalancer.server.port=8080"
        - "traefik.port=80"

  apache:
    env_file: ./.env
    hình ảnh: visio_rdv_apache: mới nhất
    xây dựng:
      bối cảnh: docker/hình ảnh/Apache2.4
      dockerfile: dockerfile
      lập luận:
        UID: ${HOST_UID}
        ROOT_URL: ${ROOT_URL}
    cổng:
      - 8000:80
    môi trường:
      FPM_HOST: php:9000
      ROOT_URL: ${ROOT_URL}
    khối lượng:
      - ${LOGS_DIR}/Apache/:/var/log/httpd/
      - ${RELATIVE_APP_PATH}:/var/www/html      
    liên kết:
      - postgres
      - php

    mạng:
      - nội bộ
      - traefik-public
    triển khai:
      nhãn:
        - "traefik.enable=true"
        - "traefik.http.routers.visio_rdv.rule=Host(`test.example.com`)"
        - "traefik.http.routers.visio_rdv.entrypoints=websecure"
        - "traefik.http.routers.visio_rdv.tls.certresolver=letsencryptresolver"
        - "traefik.http.services.visio_rdv.loadbalancer.server.port=80"
        - "traefik.port=80"

  php:
    env_file: .env
    liên kết:
      - ftp
    hình ảnh: visio_rdv_php:mới nhất
    xây dựng:
      bối cảnh: docker/hình ảnh/php
      dockerfile: dockerfile
      lập luận:
        UID: ${HOST_UID}
        Múi giờ: ${TIMEZONE}
        PROXY: ${http_proxy}
    khối lượng:
      - ftp_data:/var/www/ftp:rw
      - ${RELATIVE_APP_PATH}:/var/www/html      
    mạng:
      - nội bộ

  ftp:
    env_file: .env
    hình ảnh: "fauria/vsftpd:latest"
    cổng:
      - "9520:20"
      - "9521:21"
      - "21100-21110:21100-21110"
    môi trường:
      FTP_USER: ${FTP_USER}
      FTP_PASS: ${FTP_PASS}      
      PASV_MIN_PORT: 21100
      PASV_MAX_PORT: 21100
    khối lượng:
      - ftp_data:/home/vsftpd/${AUTOMATION_CLIENT_NAME}:rw
    mạng:
      - nội bộ

khối lượng:
  ftp_data:
  cơ sở dữ liệu:

mạng:
  traefik-công khai:
    bên ngoài: đúng
  nội bộ:
    bên ngoài: sai

Với đàn Docker

Nhật ký Apache:

[Thứ tư ngày 04 tháng 8 07:35:16.382246 2021] [proxy:error] [pid 11] (111)Kết nối bị từ chối: AH00957: FCGI: cố gắng kết nối với 10.0.4.93:9000 (*) không thành công
[Thứ tư ngày 04 tháng 8 07:35:16.382314 năm 2021] [proxy_fcgi:error] [pid 11] [client 10.0.0.2:1035] AH01079: không thể kết nối với chương trình phụ trợ: php, người giới thiệu: http://test.example.com /

Danh sách dịch vụ bầy đàn:

dịch vụ docker ls
ID NAME CHẾ ĐỘ SAO CHÉP CỔNG HÌNH ẢNH
um2txtpz8534 traefik_reverse-proxy được sao chép 1/1 traefik:v2.4                   
ahf7uukapxbr my_stack_adminer đã sao chép 1/1 quản trị viên: mới nhất                 
ue8qekmg0ff0 my_stack_apache được sao chép 1/1 my_stack_apache:latest my_stack*:8000->80/tcp
x9igaslhsx11 my_stack_ftp được sao chép 1/1 fauria/vsftpd:latest *:9520-9521->20-21/tcp, *:21100-21110->21100-21110/tcp
jpk4qzqs1tfx my_stack_php được sao chép 1/1 my_stack_php:latest           
ih67rh82vp9e my_stack_postgres đã sao chép 1/1 postgres:9.5.24    

tôi đã cố gắng thêm công cụ mạng vào hình ảnh PHP, để kiểm tra thủ công kết nối với nc. Cùng một kết quả, php IP phiên bản vùng chứa được giải quyết chính xác, nhưng mọi kết nối TCP tới cổng 9000 đều bị từ chối.

Tôi sử dụng rất nhiều lọ môi trường và để khắc phục tính năng còn thiếu với Swarm, tôi sử dụng docker-compose cấu hình đầu ra lệnh để tạo hoàn thành docker-compose.yml tập tin.

Với soạn thảo docker

         Tên Lệnh Trạng thái Cổng                                                                    
--------------------------------------------- --------------------------------------------- --------------------------------------------- --------------------------------------------- --------
my_stack_adminer_1 entrypoint.sh docker-php-e ... Lên 8080/tcp                                                                                                                                     
my_stack_apache_1 /bin/sh -c apachectl -D FO ... Lên 0.0.0.0:8000->80/tcp                                                                                                                         
my_stack_ftp_1 /usr/sbin/run-vsftpd.sh Lên 0.0.0.0:9520->20/tcp, 0.0.0.0:9521->21/tcp, 0.0.0.0:21100->21100/tcp, 0.0.0.0:21101 ->21101/tcp, 0.0.0.0:21102->21102/tcp,                    
                                                                   0.0.0.0:21103->21103/tcp, 0.0.0.0:21104->21104/tcp, 0.0.0.0:21105->21105/tcp, 0.0.0.0:21106->21106/tcp, 0.0.0.0:21107- >21107/tcp,            
                                                                   0.0.0.0:21108->21108/tcp, 0.0.0.0:21109->21109/tcp, 0.0.0.0:21110->21110/tcp                                                                 
my_stack_php_1 php-fpm -R -F Lên 9000/tcp                                                                                                                                     
my_stack_postgres_1 docker-entrypoint.sh postgres Lên 5432/tcp 
Điểm:0
lá cờ in
  1. Làm thế nào bạn thực hiện việc xây dựng?

Swarm không giống như docker-compose: "một triển khai là một triển khai" - và KHÔNG phải là một bản dựng! (bạn cần xây dựng hình ảnh trước khi triển khai chúng - và những hình ảnh soạn thảo (có thể có sẵn) 'có thể không đáp ứng yêu cầu ...)

Với:

triển khai ngăn xếp docker -c your-compose-style-code.yml <name-of-your-swarm>

bạn đang triển khai một hình ảnh hiện có vào bầy đàn đã chọn (nó có thể sử dụng những hình ảnh bạn đã tạo thông qua docker-compose trước đây...

... một chủ đề khác trong swarm là kết nối mạng: bạn cần lưu ý về phạm vi mạng (lớp phủ rộng của cụm hoặc swarm - hoặc phạm vi của mạng "nội bộ" để kết nối các dịch vụ đã chọn của "không gian tên" theo cách bạn thực hiện trong phần soạn thảo ...)

... và sau đó, tất nhiên, khối lượng của các phần trạng thái (cơ sở dữ liệu, tệp mà người dùng có thể tải lên) cần được quản lý theo một cách khác (từ NFS đến glusterFS đến Galera đến linbit/LINSTOR ...hoặc con giánDB chỉ để đặt tên cho một số ...), vì các thùng chứa các phần không trạng thái của dàn nhạc của bạn hiện được phân phối trên nhiều nút khác nhau..

  1. Đôi khi thêm "portainer" vào đàn của bạn là một ý tưởng hay https://www.portainer.io/solutions/docker ...

Đă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.