Lúc này hay lúc khác, tôi phải tạo một dự án từ đầu, nhưng đôi khi tôi lại lãng phí rất nhiều thời gian chỉ để tạo môi trường, vì vậy để dễ dàng hơn, tôi sẽ để sẵn một số thứ với php và nginx bằng cách sử dụng docker
đọc tôi
Bắt đầu bằng cách thêm một
touch Makefile
6 vào dự án và khi dự án tiến triển, bạn sẽ chỉnh sửa nó cho đến khi nó trông thực sự bắt mắttouch README.md
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Makefile
Bây giờ, hãy tổ chức docker trong một thư mục mà chúng ta sẽ sử dụng
touch Makefile
7touch Makefile
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Docker-soạn thảo
Và hãy tạo một thư mục docker và bên trong nó bây giờ chỉ có tệp
touch Makefile
8mkdir docker && touch docker-composer.yml
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Trong
touch Makefile
9 của tôi, hiện tại chúng tôi sẽ chỉ có nginx và php-fpmversion: "3.9"
name: default
services:
nginx_default:
container_name: nginx_default
image: nginx:1.17.8
ports:
- 80:80
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf
- ../:/var/www
links:
- php_default
php_default:
container_name: php_default
build: ./php
working_dir: /var/www
volumes:
- ../:/var/www
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
💡Nhớ là mình thích đổi tên container thành 1 tổ chức nào đó, trong này mặc định là project nên mình sẽ để
mkdir docker && touch docker-composer.yml
0 Mục tiêu mà chúng tôi sẽ cố gắng đạt được là chạy một ứng dụng PHP đơn giản bằng cách sử dụng kho Docker chính thức cho cả PHP và Nginx. Có một số kho lưu trữ docker kết hợp PHP-FPM với Nginx, nhưng tùy thuộc vào kho lưu trữ chính thức sẽ mang lại cho bạn một số lợi ích, chẳng hạn như sử dụng dịch vụ được định cấu hình bởi người bảo trì và bạn luôn có thể chọn giữa phiên bản mới nhất và lớn nhất hoặc phiên bản khác nhau của cả hai dịch vụ,
Tất nhiên, điều đầu tiên bạn phải làm là cài đặt Docker [nếu bạn chưa có]. Điều kiện tiên quyết thứ hai là tải Docker Compose [có sẵn trong hộp công cụ Mac]. Bây giờ chúng ta đã biết mình muốn đạt được điều gì và có các công cụ để đạt được điều đó – hãy bắt tay vào làm
Thiết lập Nginx
Chúng tôi sẽ bắt đầu bằng cách tự nhận một máy chủ web và dựa trên các yêu cầu của chúng tôi, đây sẽ là vùng chứa chạy hình ảnh Nginx chính thức. Vì chúng ta sẽ sử dụng Docker Compose nên chúng ta sẽ tạo docker-compose sau. yml, tệp này sẽ chạy hình ảnh Nginx mới nhất và sẽ hiển thị cổng 80 của nó thành cổng 8080
web:
image: nginx:latest
ports:
- "8080:80"
Bây giờ chúng ta có thể chạy
touch README.md
0Điều này sẽ cung cấp cho bạn màn hình Nginx mặc định trên cổng 8080 cho máy chủ cục bộ hoặc IP của máy docker của bạn
Bây giờ chúng ta có một máy chủ, hãy thêm một số mã. Đầu tiên chúng ta phải cập nhật docker-compose. yml để gắn thư mục cục bộ. Tôi sẽ sử dụng một thư mục có tên code, nằm trong cùng thư mục với docker-compose của tôi. yml và nó sẽ được gắn dưới dạng mã thư mục gốc trong vùng chứa
touch README.md
1Bước tiếp theo là cho Nginx biết rằng thư mục này tồn tại.
Hãy tạo trang web sau. conf ở cùng cấp độ với docker-compose. tập tin yml.
touch README.md
2Nếu bạn không có nhiều kinh nghiệm với Nginx, đây là những gì chúng tôi xác định ở đây – chỉ mục. html sẽ là chỉ mục mặc định của chúng tôi, tên máy chủ là php-docker. local và nó phải trỏ [cập nhật tệp máy chủ của bạn] vào môi trường Docker của bạn [máy chủ cục bộ nếu bạn đang sử dụng Linux hoặc máy docker nếu bạn đang sử dụng Mac hoặc Windows], chúng tôi chỉ ra các nhật ký lỗi là những nhật ký được hiển thị bởi vùng chứa mặc định
Để kích hoạt thiết lập này, chúng tôi cần áp dụng một sửa đổi khác đối với docker-compose. tập tin yml
touch README.md
3Điều này sẽ thêm trang web. conf vào thư mục mà Nginx đang tìm kiếm các tệp cấu hình để đưa vào. Giờ đây, bạn có thể đặt chỉ mục. html trong thư mục mã có nội dung khiến bạn hài lòng. Và nếu chúng ta chạy
touch README.md
0một lần nữa, chỉ mục. tệp html phải khả dụng trên php-docker. địa phương. 8080
vâng. Chúng ta đã đi được nửa chặng đường
Thêm PHP-FPM
Bây giờ chúng ta đã thiết lập và chạy Nginx, hãy thêm PHP vào trò chơi. Điều đầu tiên chúng tôi sẽ làm là kéo repo PHP7-FPM chính thức và liên kết nó với bộ chứa Nginx của chúng tôi. docker-compose của chúng tôi. yml sẽ trông như thế này bây giờ
touch README.md
5Điều tiếp theo cần làm là định cấu hình Nginx để sử dụng bộ chứa PHP-FPM để diễn giải các tệp PHP. Trang web cập nhật của bạn. conf sẽ trông như thế này
touch README.md
6Để kiểm tra điều này, hãy đổi tên chỉ mục. tệp html để lập chỉ mục. php và thay thế nội dung của nó bằng tiêu chuẩn
touch README.md
7một trận chung kết
touch README.md
0Và chúng ta nên đi thôi. nhưng
Thay vì nhận được trang thông tin PHP phù hợp, chúng tôi nhận được thông báo khá đáng lo ngại
touch README.md
00Vì PHP đang chạy trong môi trường riêng của nó [vùng chứa] nên nó không có quyền truy cập vào mã. Để khắc phục điều này, chúng ta cũng cần gắn thư mục mã trong bộ chứa PHP. Bằng cách này, Nginx sẽ có thể phục vụ bất kỳ tệp tĩnh nào và PHP sẽ có thể tìm thấy các tệp mà nó phải diễn giải. Một thay đổi cuối cùng đối với docker-compose. yml
touch README.md
01Cuối cùng, lần cuối cùng này [lần này là thật]
touch README.md
0cung cấp cho chúng tôi thông tin PHP rất được mong đợi
Đây là thông tin.
Chúng tôi có thể chạy bất kỳ ứng dụng PHP đơn giản nào bên trong bộ chứa Docker, sử dụng hình ảnh chính thức cho Nginx và PHP.
Bạn có thể tìm thấy dự án mẫu tại đây https. //github. com/mikechernev/dockerised-php
CHỈNH SỬA. Vì kho lưu trữ GitHub đã thay đổi khá nhiều, tôi đã thêm một bài đăng blog mới giải thích các cải tiến - Làm cho ứng dụng PHP dockerised của bạn thậm chí còn tốt hơn