Làm cách nào để chạy PHP MySQL trong Docker?
Tiếp tục với Containerize This. loạt bài này, chúng tôi đang xem xét các công nghệ ứng dụng web phổ biến và cách sử dụng chúng trong bộ chứa Docker một cách hiệu quả Show PHP, Apache và MySQL có thị phần rất lớn trên các hệ thống quản lý nội dung và ứng dụng web trên internet và với rất nhiều nhà phát triển sử dụng các công nghệ này, có rất nhiều mối quan tâm để hiện đại hóa cách họ sử dụng chúng từ các nhà phát triển địa phương. . Hôm nay chúng ta sẽ xem xét một số cách để chứa và liên kết PHP, Apache và MySQL với nhau đồng thời trình bày một số mẹo, thủ thuật và các phương pháp hay nhất sẽ giúp bạn có cách tiếp cận hiện đại khi phát triển và triển khai các ứng dụng PHP của mình Có 5 tệp đơn giản cho bản trình diễn này mà bạn có thể sao chép từ https. //github. com/mzazon/php-apache-mysql-containerized hoặc chỉ cần sao chép và dán từ bài đăng này để sao chép cấu trúc thư mục sau. Xin lưu ý rằng một số Docker và nguyên tắc bảo mật đã bị bỏ qua ở đây vì mục đích trình diễn và đơn giản. Cụ thể là PHP sử dụng thông tin đăng nhập gốc, mật khẩu MySQL được mã hóa cứng/yếu, thiếu SSL, v.v. Không chạy mã này trong sản xuất /php-apache-mysql/ ├── apache │ ├── Dockerfile │ └── demo.apache.conf ├── docker-compose.yml ├── php │ └── Dockerfile └── public_html └── index.php Sau khi cấu trúc này được sao chép hoặc sao chép với các tệp này và Docker được cài đặt cục bộ, bạn chỉ cần chạy “docker-compose up” từ thư mục gốc của dự án và trỏ trình duyệt của bạn (hoặc curl) tới http. //máy chủ cục bộ. 8080 để xem demo. Chúng ta sẽ tìm hiểu “docker-compose” là gì và điều gì tạo nên trình diễn cơ bản này trong các phần sau Chúng tôi sẽ sử dụng ứng dụng PHP đơn giản sau đây để chứng minh mọi thứ mục lục. php
Mã này cố gắng kết nối với cơ sở dữ liệu MySQL bằng giao diện mysqli từ PHP. Nếu thành công, nó in một thành công. Nếu không, nó sẽ in một thông báo không thành công Docker SoạnĐịnh dạng này đã xuất hiện được một thời gian ở Dockerland và hiện đang ở phiên bản 3. 6 tại thời điểm viết bài này. Chúng tôi sẽ sử dụng 3. 2 ở đây để đảm bảo khả năng tương thích rộng rãi với những người có thể không chạy phiên bản Docker mới nhất và tốt nhất (tuy nhiên, bạn phải luôn nâng cấp. ) Định dạng này cho phép xác định các bộ dịch vụ tạo nên toàn bộ ứng dụng. Nó cho phép bạn xác định các phụ thuộc cho các dịch vụ, mạng, khối lượng, v.v. dưới dạng mã. Khi đưa vào sản xuất, bạn thậm chí có thể chỉ định các tham số triển khai trên các dịch vụ cho phép bạn sao chép, thay đổi quy mô, cập nhật và tự phục hồi trên Docker Swarm hoặc thậm chí Kubernetes trên Docker cho Mac hoặc Docker Enterprise Edition mới nhất soạn thảo docker. ymlversion: "3.2" services: php: build: './php/' networks: - backend volumes: - ./public_html/:/var/www/html/ apache: build: './apache/' depends_on: - php - mysql networks: - frontend - backend ports: - "8080:80" volumes: - ./public_html/:/var/www/html/ mysql: image: mysql:5.6.40 networks: - backend environment: - MYSQL_ROOT_PASSWORD=rootpassword networks: frontend: backend:
|