Bạn có thể đã nghe từ đứa trẻ mới quanh khu phố được gọi là "Docker"? . Đến cuối của nó, bạn nên biết. - cách thiết lập Docker "nguyên bản" trên máy Windows 10 - cách xây dựng và chạy bộ chứa từ dòng lệnh - cách đăng nhập vào bộ chứa và khám phá chúng để biết thông tin - Dockerfile là gì và cách sử dụng nó - cách bộ chứa có thể
Ghi chú. Tôi sẽ không chỉ đi trên con đường hạnh phúc trong hướng dẫn này. Điều đó có nghĩa là tôi sẽ đi sâu vào một số thứ không hoàn toàn liên quan đến docker [e. g. cách tìm ra vị trí của các tệp cấu hình cho php-fpm], nhưng điều đó rất quan trọng cần hiểu, vì chúng cho phép bạn tự giải quyết các vấn đề sau này
Nhưng nếu bạn không có nhiều thời gian, bạn cũng có thể chuyển thẳng đến tl;dr
Tất cả các mẫu mã đều có sẵn công khai trong kho Hướng dẫn Docker PHP của tôi trên Github. Nhánh của hướng dẫn này là part_1_setting-up-php-php-fpm-and-nginx-for-local-development-on-docker
Tất cả các phần đã xuất bản của Docker PHP Tutorial được thu thập dưới một trang chuyên dụng tại Docker PHP Tutorial. Phần sau là Thiết lập PhpStorm với Xdebug để phát triển cục bộ trên Docker
Nếu muốn theo dõi, vui lòng đăng ký RSS feed hoặc qua email để nhận thông báo tự động khi có phần tiếp theo. ]
Mục lục
- Giới thiệu
- điều kiện tiên quyết
- Tại sao nên sử dụng Docker?
- Chuyển đổi từ Vagrant
- Thiết lập Docker
- Thiết lập bộ chứa PHP cli
- Cài đặt Xdebug trong bộ chứa PHP
- Thay đổi hình ảnh liên tục với Dockerfile
- Thiết lập ngăn xếp web với php-fpm và nginx
- Thiết lập nginx
- Thiết lập php-fpm
- Đang cài đặt xdebug
- Kết nối nginx và php-fpm
- Để tất cả chúng cùng nhau. Gặp docker-compose
- tl;dr
Giới thiệu
điều kiện tiên quyết
Tôi cho rằng bạn đã cài đặt Git bash cho Windows. Nếu không, hãy làm điều đó trước, xem Thiết lập phần mềm. Git và Git Bash
Tại sao nên sử dụng Docker?
Tôi sẽ không đi sâu vào chi tiết Docker là gì và tại sao bạn nên sử dụng nó, bởi vì những người khác đã nói rất nhiều về điều này.
Đối với tôi, lý do chính của tôi là - Các liên kết tượng trưng trong vagrant không hoạt động như bình thường - VM trở nên cồng kềnh và khó quản lý theo thời gian - Quá trình thiết lập trong nhóm liên quan đến rất nhiều công việc - Tôi đã muốn học Docker khá lâu
Nói chung, Docker giống như một máy ảo, vì vậy nó cho phép chúng tôi phát triển trong một hệ điều hành mà chúng tôi chọn [e. g. Windows] nhưng chạy mã trong cùng một môi trường như trong sản xuất [e. g. trên máy chủ linux]. Nhờ các nguyên tắc cốt lõi của nó, nó làm cho việc tách các dịch vụ trở nên thực sự dễ dàng [e. g. có một máy chủ chuyên dụng cho cơ sở dữ liệu của bạn] - một lần nữa - là điều nên xảy ra trong quá trình sản xuất
Chuyển đổi từ Vagrant
Trên Windows, bạn có thể sử dụng Hộp công cụ Docker [về cơ bản là một máy ảo có thiết lập Docker trên đó] hoặc Docker dựa trên Hyper-V cho Windows. Hướng dẫn này sẽ chỉ xem xét phần sau
Một lời cảnh báo. Thật không may, chúng ta không thể có các vị thần khác ngoài Docker [trên Windows]. Máy khách Docker gốc yêu cầu kích hoạt Hyper-V, điều này sẽ khiến Virtualbox không hoạt động nữa. Do đó, chúng tôi sẽ không thể sử dụng Vagrant và Docker cùng nhau. Đây thực sự là lý do chính khiến tôi mất nhiều thời gian để bắt đầu làm việc với Docker
Thiết lập Docker
Đầu tiên, tải xuống Docker cho Windows [yêu cầu Microsoft Windows 10 Professional hoặc Enterprise 64-bit]. Phiên bản tôi đang sử dụng trong hướng dẫn này là
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
21. Trong quá trình cài đặt, hãy bỏ chọn tùy chọn "Sử dụng bộ chứa Windows thay vì bộ chứa Linux" vì chúng tôi dự định phát triển trên bộ chứa linux [bạn có thể thay đổi tùy chọn này sau]Sau khi cài đặt xong, chúng ta cần đăng xuất khỏi Windows và đăng nhập lại. Docker sẽ bắt đầu tự động. Nếu không, sẽ có biểu tượng "Docker cho Windows" được đặt trên màn hình nền của bạn. Nếu Hyper-V chưa được kích hoạt, Docker sẽ tự động thúc giục bạn thực hiện ngay
Nếu bạn đồng ý, các tính năng của Hyper-V và vùng chứa sẽ được kích hoạt và quá trình khởi động lại sẽ bắt đầu. Xem Cài đặt Hyper-V trên Windows 10 để hủy kích hoạt lại
thận trọng. VirtualBox sẽ ngừng hoạt động sau đó. Khởi động một trong các máy trước đây của tôi từ giao diện VirtualBox hoặc qua
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
22 không thành công với thông báo lỗiVT-x không khả dụng [VERR_VMX_NO_VMX]
Sau khi khởi động lại, Docker sẽ tự khởi động và màn hình chào mừng xuất hiện
Chúng ta có thể bỏ qua điều đó [đóng cửa sổ]. Ngoài ra, một biểu tượng mới được thêm vào khay hệ thống của bạn. Nhấp chuột phải sẽ hiển thị menu ngữ cảnh
Mở tab "Thiết bị dùng chung" và đánh dấu vào ổ cứng trên máy chủ mà bạn muốn chia sẻ với bộ chứa Docker
Ghi chú. Chúng tôi sẽ vẫn cần xác định ánh xạ đường dẫn rõ ràng cho các vùng chứa thực tế sau này, nhưng ổ cứng chứa đường dẫn đó phải được cung cấp tại đây. Sau khi nhấp vào "Áp dụng", bạn sẽ được nhắc nhập thông tin đăng nhập của mình
Tiếp theo, mở tab "Nâng cao". Bạn thực sự không phải thay đổi bất kỳ cài đặt nào nhưng nếu bạn [như tôi] không thiết lập
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
23 làm phân vùng lớn nhất, bạn có thể muốn thay đổi "Vị trí ảnh đĩa". Tôi đang đặt của tôi tại docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
24. Có thể mất vài phút để Docker xử lý các thay đổiDocker "vật lý" lưu trữ hình ảnh vùng chứa ở vị trí đó
Xin chúc mừng, Docker hiện đã được thiết lập trên máy của bạn 😊
Thiết lập bộ chứa PHP cli
Bây giờ chúng ta đã có những thứ chung chung, hãy thiết lập vùng chứa đầu tiên của chúng ta. Tôi đã tạo thư mục
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
25 và sẽ chạy các ví dụ còn lại trong đóĐầu tiên, hãy tạo một thư mục cho mã nguồn của chúng tôi
mkdir -p "C:/codebase/docker-php/app"
Để đơn giản, chúng tôi sẽ sử dụng hình ảnh PHP chính thức và chạy
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Nghĩa là
________số 8Kết quả trông giống như thế này
$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
Vì chúng tôi không có hình ảnh trên máy của mình [xem
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
26], Docker cố gắng lấy nó từ sổ đăng ký chính thức tại https. // trung tâm. người đóng tàu. com/. Chúng tôi đã đặc biệt chọn "7. 0-cli" của hình ảnh PHP [có nghĩa là. PHP7. 0 chỉ CLI]. Xem https. // trung tâm. người đóng tàu. com/_/php/ để biết danh sách tất cả các thẻ/hình ảnh có sẵnBây giờ hãy xem liệu container có thực sự chạy qua
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
27docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
2Kỳ dị. Vì một số lý do, chúng tôi không thấy vùng chứa mới được tạo của mình ở đó. Hãy kiểm tra với cờ
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
28 để liệt kê tất cả các vùng chứa, kể cả những vùng không chạydocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
4à há. Vì vậy, vùng chứa đã được tạo, nhưng ngay lập tức dừng lại [xem
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
29]. Đó là bởi vì một container chỉ tồn tại khi tiến trình chính của nó đang chạy. Theo các tài liệu,Quy trình chạy chính của vùng chứa là ENTRYPOINT và/hoặc CMD ở cuối Dockerfile. "
Câu trả lời này giải thích khá rõ về sự khác biệt giữa CMD và ENTRYPOINT. Vì chúng ta chưa xác định Dockerfile, chúng ta sẽ cần xem Dockerfile của hình ảnh cơ sở mà chúng ta đang sử dụng, nhưng tôi thực sự không muốn đi xuống hố thỏ này ngay bây giờ. Về cơ bản, "vấn đề" là, vùng chứa không có quy trình/dịch vụ chạy dài được xác định, [như các vùng chứa php-fpm hoặc nginx thực hiện sau này]. Để giữ cho vùng chứa tồn tại, chúng ta cần thêm cờ
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
30 vào lệnh docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
31docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
8Nhưng sau đó điều này xảy ra
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
9Rõ ràng, chúng ta không thể sử dụng lại tên cũ [
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
32]. đáng tiếc. Vì vậy, trước tiên hãy xóa vùng chứa trước quadocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
1và thử lại sau đó
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
2Thật tuyệt, vì vậy bây giờ vùng chứa đã hoạt động, hãy "đăng nhập" qua
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
0Bạn có thể nhận được thông báo lỗi sau
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
1Nếu vậy, thêm tiền tố vào lệnh bằng
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
33 sẽ hữu íchdocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
2____03Một
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
34 nhanh chóng trong vùng chứa xác minh rằng chúng tôi thực sự có thể chạy các tập lệnh php trong đódocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
4Hãy nhớ ánh xạ đường dẫn, mà chúng tôi đã chỉ định?
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
5Sẽ trông như thế này trên máy chủ
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
6Và như thế này từ bên trong container
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
7Hãy chạy tập lệnh trong vùng chứa qua
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
8docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
9hoàn hảo. Chúng tôi đã tạo tệp trên hệ thống máy chủ của mình và tệp tự động có sẵn trong vùng chứa
Cài đặt Xdebug trong bộ chứa PHP
Vì chúng tôi dự định sử dụng Docker để thiết lập phát triển cục bộ nên khả năng gỡ lỗi là bắt buộc. Vì vậy, hãy mở rộng hình ảnh của chúng ta bằng tiện ích mở rộng xdebug. Readme của kho lưu trữ Docker PHP chính thức thực hiện tốt công việc giải thích cách cài đặt tiện ích mở rộng. Đối với xdebug, chúng tôi sẽ sử dụng PECL. Để cài đặt tiện ích mở rộng, hãy đảm bảo đăng nhập vào vùng chứa và chạy
docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
0Bạn sẽ thấy một đầu ra như thế này
docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
1Tiện ích mở rộng xdebug đã được xây dựng và lưu trong
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
36. Để thực sự kích hoạt nó, hãy chạydocker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
2Lệnh trợ giúp đó sẽ đặt tệp
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
37 trong thư mục cho các tệp php ini bổ sung có nội dungdocker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
3cho phép mở rộng. btw. bạn có thể định vị thư mục tệp php ini bổ sung bằng cách chạy
docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
4Kết quả
docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
5Khi chúng tôi kiểm tra nội dung của thư mục đó, chúng tôi thực sự sẽ tìm thấy tệp
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
38 với nội dung được đề cập trước đó và docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
39 tiết lộ rằng xdebug thực sự đang hoạt độngdocker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
6Bây giờ, chúng tôi sẽ đăng xuất khỏi vùng chứa [nhập "exit" hoặc nhấn
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
40 +docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
41] và dừng vùng chứa quadocker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
7docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
8Bây giờ chúng tôi bắt đầu lại vùng chứa thông qua
docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
9đăng nhập lại và kiểm tra xem xdebug có còn không
$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
0Và. nó là. Vì vậy, những thay đổi chúng tôi đã thực hiện "tồn tại" khi khởi động lại vùng chứa. Nhưng mà. Chúng sẽ không tồn tại sau khi "xây dựng lại" vùng chứa. Trước tiên, chúng tôi dừng và xóa vùng chứa qua
$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
1Cờ
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
42 buộc container dừng lại. Nếu không, chúng tôi sẽ cần thêm một docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
43 trướcSau đó, chúng tôi xây dựng lại nó, đăng nhập
$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
2và kiểm tra xdebug
$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
3mà sẽ không còn ở đó nữa
$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
4Lưu ý ID vùng chứa mới [trước.
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
44; . docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
45] và docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
46 đó không mang lại kết quả gìThay đổi hình ảnh liên tục với Dockerfile
Nói một cách đơn giản, Dockerfile mô tả những thay đổi mà chúng tôi thực hiện đối với hình ảnh cơ sở, vì vậy chúng tôi [và mọi người khác] có thể dễ dàng tạo lại cùng một môi trường. Trong trường hợp của chúng tôi, chúng tôi cần xác định hình ảnh cơ sở PHP mà chúng tôi đã sử dụng cũng như hướng dẫn cài đặt và kích hoạt xdebug. Để tách biệt rõ ràng cơ sở hạ tầng khỏi mã, chúng tôi sẽ tạo một thư mục mới tại
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
47. Tạo một tệp có tên docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
48 trong thư mục này$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
5và cung cấp cho nó nội dung sau
$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
6Thay đổi thư mục
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
47 và xây dựng hình ảnh dựa trên Dockerfile đó$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
7docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
50 thực sự là tùy chọn vì dù sao đây cũng là giá trị mặc định. "docker-php-image" là tên của hình ảnh mới của chúng tôiNếu bạn gặp lỗi sau
$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
8bạn có thể đã bỏ lỡ dấu
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
51 ở cuối docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
52;]$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
9Lưu ý rằng việc xây dựng mất nhiều thời gian hơn trước, vì Docker hiện cần thực hiện thêm công việc cài đặt xdebug. Thay vì sử dụng hình ảnh cơ sở
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
53, bây giờ chúng ta sẽ sử dụng hình ảnh docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
54 mới, sáng bóng của mình để bắt đầu vùng chứa và kiểm tra xdebugdocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
20docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
21Aaaaand chúng tôi gặp lỗi vì chúng tôi đã cố sử dụng cùng tên ["docker-php"], mà chúng tôi đã sử dụng cho vùng chứa vẫn đang chạy trước đó. Thở dài. may mắn thay, chúng tôi đã biết cách giải quyết vấn đề đó thông qua
$ docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
7.0-cli: Pulling from library/php
f2aa67a397c4: Pulling fs layer
c533bdb78a46: Pulling fs layer
65a7293804ac: Pulling fs layer
35a9c1f94aea: Pulling fs layer
54cffc62e1c2: Pulling fs layer
153ff2f4c2af: Pulling fs layer
96d392f71f56: Pulling fs layer
e8c43e665458: Pulling fs layer
35a9c1f94aea: Waiting
54cffc62e1c2: Waiting
153ff2f4c2af: Waiting
96d392f71f56: Waiting
e8c43e665458: Waiting
c533bdb78a46: Verifying Checksum
c533bdb78a46: Download complete
35a9c1f94aea: Verifying Checksum
35a9c1f94aea: Download complete
f2aa67a397c4: Verifying Checksum
f2aa67a397c4: Download complete
153ff2f4c2af: Verifying Checksum
153ff2f4c2af: Download complete
54cffc62e1c2: Verifying Checksum
54cffc62e1c2: Download complete
e8c43e665458: Verifying Checksum
e8c43e665458: Download complete
96d392f71f56: Verifying Checksum
96d392f71f56: Download complete
f2aa67a397c4: Pull complete
65a7293804ac: Verifying Checksum
65a7293804ac: Download complete
c533bdb78a46: Pull complete
65a7293804ac: Pull complete
35a9c1f94aea: Pull complete
54cffc62e1c2: Pull complete
153ff2f4c2af: Pull complete
96d392f71f56: Pull complete
e8c43e665458: Pull complete
Digest: sha256:ff6c5e695a931f18a5b59c82b1045edea42203a299e89a554ebcd723df8b9014
Status: Downloaded newer image for php:7.0-cli
56af890e1a61f8ffa5528b040756dc62a94c0b929c29df82b9bf5dec6255321f
1Thử lại
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
20docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
24Vâng, tất cả đều tốt. btw. vì chúng tôi "chỉ" muốn kiểm tra xem xdebug đã được cài đặt hay chưa, chúng tôi cũng có thể chỉ cần chuyển
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
55 cho lệnh docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
31docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
25Xin lưu ý rằng điều này sẽ tạo một vùng chứa mới mỗi khi nó chạy [, lưu ý mục đầu tiên có tên tuyệt vời "distracted_mclean"]
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
26Trước khi tiếp tục, hãy []dừng và xóa tất cả vùng chứa qua][https. // tường mã. com/p/ewk0mq/stop-remove-all-docker-containers]
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
27Phần
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
57 chỉ trả về id số của tất cả các vùng chứa và chuyển chúng tới lệnh docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
58docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
28Thiết lập ngăn xếp web với php-fpm và nginx
Vì hầu hết mọi người có lẽ không chỉ làm việc trên các tập lệnh CLI mà còn trên các trang web, bước tiếp theo trong hướng dẫn này là thiết lập máy chủ web nginx và kết nối nó với php-fpm
Thiết lập nginx
Chúng tôi sẽ sử dụng hình ảnh nginx chính thức và vì chúng tôi chưa biết gì về hình ảnh đó, hãy chạy và khám phá nó một chút
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
29sản lượng
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
40Lưu ý rằng chúng tôi chỉ sử dụng số lượng đối số tối thiểu ở đây. Vì chúng tôi không chỉ định tên, nên chúng tôi sẽ chỉ sử dụng ID để đăng nhập [vì vậy hãy chắc chắn sử dụng tên mà trình bao của bạn đã trả về - đừng chỉ sao chép dòng bên dưới. P]
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
41Chúng tôi hy vọng rằng có một tiến trình nginx đang chạy, nhưng khi kiểm tra với
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
59, chúng tôi nhận đượcdocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
42Điều này phổ biến khi sử dụng hình ảnh docker, vì chúng thường được giữ ở mức tối thiểu nhất có thể. Mặc dù đây là một thực tiễn tốt trong sản xuất, nhưng nó hơi cồng kềnh trong quá trình phát triển. Vì vậy, hãy cài đặt
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
60 quadocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
43và thử lại
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
44Ah. Tốt hơn nhiều. Hãy tìm hiểu sâu hơn một chút và xem quy trình được định cấu hình như thế nào thông qua
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
61docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
45Tuyệt vời, vì vậy tệp cấu hình được đặt ở vị trí mặc định tại
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
62 [xem docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
63]. Kiểm tra tệp đó sẽ hiển thị cho chúng tôi, nơi chúng tôi cần đặt các tệp cấu hình bổ sung [e. g. cho cấu hình trang web của bạn]. Chạydocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
46và nhìn thấy
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
47Lưu ý dòng
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
64 ở cuối tệp. Trong thư mục này, chúng ta sẽ tìm cấu hình nginx mặc địnhdocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
48docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
49Vì vậy, máy chủ đang lắng nghe trên cổng 80. Thật không may, chúng tôi không thể truy cập máy chủ web từ máy chủ windows của chúng tôi, vì hiện tại [2018-05-31] một lỗi mở để truy cập IP vùng chứa từ máy chủ windows [đừng lo lắng, chúng tôi sẽ khắc phục điều đó bằng ánh xạ cổng . Vì vậy, để xác minh rằng máy chủ đang thực sự hoạt động, chúng tôi sẽ cài đặt
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
65 bên trong bộ chứa nginx và tìm nạp docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
66docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
80Hình như thế này
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
81có vẻ tốt. Bây giờ hãy tùy chỉnh một số thứ. - trỏ gốc tới
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
67 - đặt tệp chỉ mục "Xin chào thế giới" trong docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
68docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
82Để các thay đổi có hiệu lực, chúng ta cần tải lại nginx qua
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
83docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
84Kiểm tra với curl, et voilá
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
85Với tất cả thông tin mới đó, chúng tôi có thể thiết lập hình ảnh nginx của mình với cấu trúc thư mục sau trên máy chủ
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
86docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
69docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
87docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
70docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
88docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
71docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
89Dọn dẹp vùng chứa nginx "thăm dò",
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
72 thành docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
73 và xây dựng hình ảnh mớidocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
90docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
91Và sau đó chạy vùng chứa "mới" qua
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
92ở đâu
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
93Nhờ ánh xạ cổng, giờ đây chúng ta có thể mở http một cách đơn giản. //127. 0. 0. 1. 8080/ trong trình duyệt trên máy chủ và xem nội dung của tệp
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
71 của chúng tôiNếu bạn muốn biết thêm thông tin về cách chạy nginx trên Docker, hãy xem hướng dẫn này
Trước khi chúng ta tiếp tục, hãy dọn dẹp
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
94Thiết lập php-fpm
Chúng tôi đã quen thuộc với hình ảnh docker PHP chính thức nhưng cho đến nay mới chỉ sử dụng phiên bản chỉ có cli. FPM có thể được kéo vào bằng cách sử dụng các thẻ
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
75 [e. g. như docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
76]. Cũng như với nginx, trước tiên hãy khám phá hình ảnh php-fpmdocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
95Điều đầu tiên cần lưu ý là hình ảnh sẽ tự động hiển thị cổng 9000 khi
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
27 hiển thịdocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
96Khi chúng tôi kiểm tra Dockerfile đã được sử dụng để xây dựng hình ảnh [bấm vào đây và tìm kiếm "7. 0-fpm" hiện tại [2018-05-31] liên kết ở đây], chúng ta có thể thấy rằng nó chứa một
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
78 ở dưới cùngChúng ta có thể tìm ra những gì khác
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
97Đầu tiên, sẽ kiểm tra vị trí của các tệp cấu hình thông qua
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
79docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
98docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
80 là nghi phạm của chúng tôi. Vì vậy, rất có khả năng chúng tôi sẽ tìm thấy tệp cấu hình chỉ thị toàn cầu tại docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
81 [rất tiếc, chúng tôi không thể giải quyết vị trí trực tiếp]. docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
82'ing tệp này cho docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
83 tiết lộ vị trí cho cấu hình chỉ thị nhómdocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
99docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
10Hm - một đường dẫn tương đối. Điều đó có vẻ hơi kỳ lạ?
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
11docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
12Ah - điều đó có ý nghĩa hơn. Vì vậy, chúng tôi cần giải quyết
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
86 liên quan đến docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
87. Kết quả là docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
88 [thông thường ít nhất bạn sẽ tìm thấy tệp docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
89 trong đó]. Cấu hình nhóm xác định trong số những thứ khác cách php-fpm lắng nghe các kết nối [e. g. thông qua ổ cắm Unix hoặc qua TCP IP. Hải cảng]docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
13docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
14php-fpm ist đang nghe trên cổng 9000 trên 127. 0. 0. 1 [máy chủ cục bộ]. Vì vậy, hoàn toàn hợp lý khi để lộ cổng 9000
Đang cài đặt xdebug
Vì chúng tôi có thể cũng muốn gỡ lỗi php-fpm, xdebug cũng cần được thiết lập. Quá trình này khá giống với hình ảnh cli
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
15Tất nhiên, chúng tôi cũng sẽ đặt nó trong Dockerfile của riêng nó
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
16docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
90docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
17Dọn dẹp vùng chứa thử nghiệm và xây dựng hình ảnh mới
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
18Kết nối nginx và php-fpm
Bây giờ chúng ta có các thùng chứa nginx và php-fpm, chúng ta cần kết nối chúng. Để làm như vậy, chúng tôi phải đảm bảo rằng cả hai vùng chứa đều nằm trong cùng một mạng và có thể giao tiếp với nhau [đây là một vấn đề phổ biến]. Docker cung cấp cái gọi là mạng cầu nối do người dùng xác định cho phép khám phá dịch vụ tự động. Về cơ bản, điều đó có nghĩa là bộ chứa nginx của chúng ta có thể sử dụng tên của bộ chứa php-fpm để kết nối với nó. Nếu không, chúng tôi sẽ phải tìm ra địa chỉ IP của vùng chứa trong mạng mặc định mỗi khi chúng tôi khởi động vùng chứa
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
19hiển thị danh sách các mạng hiện tại
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
20Bây giờ, hãy thêm một cái mới có tên là
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
91 cho ngăn xếp web của chúng ta thông quadocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
21____222Khởi động bộ chứa nginx và kết nối nó với mạng mới thông qua
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
23Cuối cùng, chúng ta cần gắn thư mục mã cục bộ
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
92 mà chúng ta đã gắn vào bộ chứa nginx tại docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
67 cũng trong bộ chứa php-fpm ở cùng một vị trídocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
24Lưu ý rằng chúng tôi đã chỉ định mạng trong lệnh chạy thông qua tùy chọn
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
94. Chúng tôi có thể xác minh rằng cả hai vùng chứa được kết nối với docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
91 bằng cách chạydocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
25docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
26Khóa "Container" tiết lộ rằng bộ chứa
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
96 có địa chỉ IP 172. 18. 0. 3 và vùng chứa docker-nginx có thể truy cập được qua 172. 18. 0. 2. Nhưng chúng ta thực sự có thể kết nối từ nginx đến php-fpm không? Đăng nhập vào nginx container
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
27và ping IP
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
28docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
29tốt, sau khi chúng tôi cung cấp lệnh bằng cách cài đặt
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
97docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
00docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
01Chúng tôi có thể ping container - điều đó tốt. Nhưng chúng tôi cũng được hứa rằng chúng tôi có thể tiếp cận container có tên là
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
96docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
02docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
03Và chúng ta có thể - tuyệt vời. Bây giờ chúng ta cần yêu cầu nginx chuyển tất cả các yêu cầu liên quan đến PHP sang php-fpm bằng cách thay đổi tệp
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
70 trên máy chủ cửa sổ của chúng ta thànhdocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
04Lưu ý dòng
docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
00 cho nginx biết cách truy cập dịch vụ php-fpm của chúng tôi. Bởi vì chúng tôi đã gắn thư mục docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
01, chúng tôi chỉ cần tải lại nginxdocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
83và mở http. //127. 0. 0. 1. 8080/xin chào thế giới. php trên trình duyệt trên máy chủ của bạn
btw. cũng có một hướng dẫn hay về geekyplatypus. com về cách Dockerise ứng dụng PHP của bạn với Nginx và PHP7-FPM. Nhưng vì nó đang sử dụng docker-compose nên bạn có thể muốn đọc chương tiếp theo trước. ]
Để tất cả chúng cùng nhau. Gặp docker-compose
Hãy tổng kết những gì chúng ta phải làm bây giờ để thiết lập và vận hành mọi thứ. 1. bắt đầu php-cli 2. bắt đầu nginx 3. bắt đầu php-fpm
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
06hừm. Tôi đoán là ổn. nhưng nó cũng cảm thấy như "rất nhiều". Sẽ không tốt hơn nhiều nếu mọi thứ được xác định gọn gàng ở một nơi phải không? . Hãy để tôi giới thiệu với bạn về docker-compose
Compose là một công cụ để xác định và chạy các ứng dụng Docker nhiều vùng chứa. Với Compose, bạn sử dụng tệp YAML để định cấu hình các dịch vụ của ứng dụng. Sau đó, với một lệnh duy nhất, bạn tạo và bắt đầu tất cả các dịch vụ từ cấu hình của mình
Hãy thực hiện từng bước một, bắt đầu với bộ chứa php-cli. Tạo tệp
docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
02docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
07Trước khi bắt đầu, chúng ta sẽ dọn dẹp các thùng chứa cũ
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
27Để kiểm tra docker-compose. yml chúng ta cần chạy
docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
03 từ docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
04docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
09docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
10Lưu ý rằng hình ảnh được xây dựng từ đầu khi chúng tôi chạy
docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
05 lần đầu tiên. Một docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
06 cho thấy container đang chạy tốt, chúng ta có thể đăng nhập và thực thi mã nguồn từ máy chủdocker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
11Đăng nhập
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
12và chạy
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
8hoạt động như trước đây
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
14Bây giờ hãy đăng xuất khỏi vùng chứa và chạy
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
15để đóng container xuống một lần nữa
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
16Thêm các dịch vụ còn lại vào tệp
docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
07docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
17Và lên nữa
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
18docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
19Chỉ cần xây dựng nginx và php-fpm vì php-cli đã tồn tại. Hãy kiểm tra xem chúng tôi vẫn có thể mở http. //127. 0. 0. 1. 8080/xin chào thế giới. php trong trình duyệt trên máy chủ
Vâng, chúng tôi có thể. Vì vậy, thay vì cần chạy 3 lệnh khác nhau với một loạt các tham số, giờ đây chúng tôi đã giảm xuống
docker run // run a container
-d // in the background [detached]
--name docker-php // named docker-php
-v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the
// windows host with /var/www in the container
php:7.0-cli // use this image to build the container
03. Có vẻ như một sự cải tiến đối với tôi;]tl;dr
Toàn bộ bài viết có rất nhiều điều cần tiếp thu và rất có thể đó không phải là cách tiếp cận hiệu quả nhất khi bạn "chỉ muốn bắt đầu". Vì vậy, trong phần này, chúng tôi sẽ chỉ tóm tắt các bước cần thiết mà không có giải thích sâu
- Tải xuống Docker cho Windows
- Cài đặt Docker
- kích hoạt Hyper-V [Hộp ảo sẽ ngừng hoạt động]
- bật Chia sẻ đĩa trong cài đặt
- Thiết lập cấu trúc thư mục sau ```` C. \codebase\docker-php
- nginx\
- conf. d\
- Địa điểm. conf
- Dockerfile
- php-cli\
- Dockerfile
- php-fpm\
- Dockerfile
- ứng dụng\
- mục lục. html
- Chào thế giới. html
- soạn thảo docker. yml ````
- hoặc đơn giản là
09docker run // run a container -d // in the background [detached] --name docker-php // named docker-php -v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the // windows host with /var/www in the container php:7.0-cli // use this image to build the container
- nginx\
- Mở vỏ tại
04docker run // run a container -d // in the background [detached] --name docker-php // named docker-php -v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the // windows host with /var/www in the container php:7.0-cli // use this image to build the container
- chạy
03docker run // run a container -d // in the background [detached] --name docker-php // named docker-php -v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the // windows host with /var/www in the container php:7.0-cli // use this image to build the container
- kiểm tra trong trình duyệt thông qua
- 127. 0. 0. 1. 8080
- 127. 0. 0. 1. 8080/xin chào thế giới. php
- chạy
12docker run // run a container -d // in the background [detached] --name docker-php // named docker-php -v "C:/codebase/docker-php/app":/var/www // sync the directory C:/codebase/docker-php/app on the // windows host with /var/www in the container php:7.0-cli // use this image to build the container
Mã ứng dụng của bạn nằm trong thư mục
docker run -d --name docker-php -v "C:/codebase/docker-php/app":/var/www php:7.0-cli
92 và các thay đổi sẽ tự động có sẵn cho các vùng chứa. Thiết lập này biểu thị phần cuối của hướng dẫn đầu tiên. Trong phần tiếp theo chúng ta sẽ tìm hiểu cách thiết lập Docker trong PHPStorm, đặc biệt là kết hợp với xdebugkết thúc
Xin chúc mừng, bạn đã làm được. Nếu bây giờ một số điều không hoàn toàn rõ ràng, đừng ngần ngại để lại nhận xét. Ngoài ra, bây giờ bạn sẽ có ý tưởng đầu tiên về docker là gì và bạn có thể sử dụng nó như thế nào
Nếu bạn muốn tìm hiểu sâu hơn, vui lòng xem các bài viết còn lại của loạt bài Docker PHP Tutorial
Vui lòng đăng ký nguồn cấp RSS hoặc qua email để nhận thông báo tự động khi phần tiếp theo này ra mắt. ]
Muốn giữ liên lạc?
Vì bạn đã kết thúc blog này, nên khả năng cao là bạn sẽ tham gia Phát triển phần mềm [có thể là PHP, Laravel, Docker hoặc Google Big Query] và tôi là một người rất thích phản hồi và kết nối mạng
Vì vậy - nếu bạn muốn giữ liên lạc, vui lòng gửi email cho tôi với đôi lời về bản thân và/hoặc kết nối với tôi trên LinkedIn hoặc Twitter hoặc chỉ cần đăng ký nguồn cấp dữ liệu RSS của tôi hoặc đi theo con đường điên rồ và đăng ký . ]
Theo dõi bài viết qua mail
Địa chỉ email
Tên đầu tiên
Chúng tôi sử dụng Mailchimp làm nhà cung cấp bản tin của mình. Bằng cách nhấp vào đăng ký, bạn xác nhận rằng thông tin của bạn sẽ được chuyển đến Mailchimp để xử lý. Tìm hiểu thêm về thực tiễn bảo mật của Mailchimp tại đây