Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lưu trữ Apache, MySQL và PHP với Docker

Nếu bạn đang làm việc với PHP và bạn muốn có một quy trình duy nhất cho mỗi vùng chứa, thì tôi khuyên bạn nên sử dụng Nginx và sử dụng PHP-FPM, vì nó dễ định cấu hình hơn Apache cho kiểu thiết lập này (ít nhất đó là những gì tôi 'đã tìm thấy).

Bạn cần đảm bảo rằng bạn có một khối lượng chia sẻ chung cho cả vùng chứa Nginx và PHP. Trong tập đó, bạn sẽ có index.php . Đây là một ví dụ thô về docker-compost.yml:

services:
  php7:
    image: "php:7.1.10-fpm"
    container_name: "prefix-php"
    volumes:
      - "./your/local/dir:/var/www/html"
  nginx:
    image: "nginx:1.13.6"
    container_name: "prefix-nginx"
    ports:
      - "80:80"
      - "443:443"
    links:
      - "php7"
    volumes:
      - "./your/local/dir:/var/www/html"

Sau đó, bạn sẽ chạy lệnh sau đây trong thư mục có docker-compose.yml tệp là:

Tiền tố
$ docker-compose -p prefix

Lý do cho "tiền tố" là bạn tạo một nhóm dự án cho các vùng chứa của mình để không xung đột với các tên vùng chứa khác.

Đương nhiên, sau đó bạn cần một cấu hình trang web nginx trỏ đến /var/www/html . Bạn sẽ có ít hoặc không có yêu cầu cấu hình cho vùng chứa php-fpm.

Một lưu ý phụ về cấu hình nginx. Docker-compos.yml ở trên chưa hoàn chỉnh nếu không có tham chiếu đến vùng chứa php trong cấu hình nginx. Điều này trông giống như vậy (nói một cách đại khái):

Máy chủ
server {
    listen 80 default_server;

    # ...more config, like root, index, server_name, etc

    location ~* \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass prefix-php:9000; # Note the container name here.
        fastcgi_index index.php;
        fastcgi_hide_header X-Powered-By;
        fastcgi_read_timeout 300s;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # ...more rules
}

Bạn sẽ nhận thấy rằng tôi đã đặt tên cho vùng chứa là "php7", bạn thực sự có thể thêm một vùng chứa "php5" khác vào docker-compose.yml này và sau đó, điều đó cho phép bạn xác định các trang web nginx sử dụng các phiên bản PHP khác nhau, tất cả đều chạy trên cùng một thiết lập docker-comp.

Tôi đánh giá cao rằng điều này không trực tiếp trả lời câu hỏi của bạn vì nó không giải quyết được nó bằng cách sử dụng apache, nhưng đó là một giải pháp thay thế để xem xét.

Hy vọng rằng điều này ít nhất cung cấp cho bạn ý tưởng để giúp giải quyết thiết lập của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn SQL để truy xuất dữ liệu năm tài chính được nhóm theo năm

  2. Làm thế nào để kiểm tra một câu lệnh SQL Update trước khi chạy nó?

  3. Tìm kiếm toàn văn bản trong MySQL trên nhiều bảng với các trường khác nhau

  4. Cách đặt thời gian chờ cho truy vấn MySQL bằng C API

  5. Sử dụng chỉ mục, sử dụng tạm thời, sử dụng filesort - làm thế nào để khắc phục điều này?