Làm cách nào để cài đặt PHP 8 trong Docker?

Các tập lệnh này có thể được chạy bằng các lệnh sau bởi một siêu người dùng. Điều này cài đặt rất nhiều thứ, đọc đầu tiên

Bạn có thể thêm

curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
95 vào sau đó kết thúc để chạy khô trước

Chúng được thử nghiệm trên phiên bản ec2 chạy vscode từ xa

Cách sử dụng

  • Thiết lập từ xa vscode
  • Chạy tất cả các tập lệnh này
  • Khởi động lại ví dụ
  • curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
    96
  • curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
    97 sẽ hoạt động ngay bây giờ
    • Ngoài ra PHP, nút, git, ssh

kịch bản

PHP8. 1 Và Nhà soạn nhạc

Cái này cài đặt PHP 8. 1, phần mở rộng và nhà soạn nhạc. Nó sẽ xuất ra sự giúp đỡ của nhà soạn nhạc

curl -fsSL //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/427f097ae2b4c66e7ad013407ae8fe858bb849e6/php81.sh | sh

Nút 16, với nvm. Ngoài ra, sợi

curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh

docker

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh

Đặt quyền cho Docker

Nếu bạn thử và chạy

curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
98 hoặc bất cứ thứ gì bây giờ, bạn có thể sẽ gặp phải lỗi quyền Docker, mã 13

Điều này sẽ làm cho người dùng

curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
99 trở thành siêu người dùng. Đó là người dùng đang chạy Docker

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/fix-docker-permissions.sh | sh

Sản lượng dự kiến.

curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
0

git và ssh

Điều này thiết lập git và tạo và cặp khóa SSH. Nó xuất ra khóa công khai

Đảm bảo thay đổi email@email. gửi email đến email của bạn và tên của bạn. Giữ dấu ngoặc kép xung quanh mỗi

Trong phần này của loạt bài hướng dẫn phát triển PHP trên Docker, chúng ta sẽ xem lại các hướng dẫn trước đó và cập nhật một số thứ để cập nhật vào năm 2022

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.
Bạn tìm thấy nhánh của hướng dẫn này tại part-4-1-docker-from-scratch-for-php-applications-in-2022

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 trước là Cấu trúc thiết lập Docker cho Dự án PHP và phần sau là PhpStorm, Docker và Xdebug 3 trên PHP 8. 1 vào năm 2022

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
  • Thiết lập docker cục bộ
  • docker
    • soạn thảo docker
      • Tệp
        .
        └── .docker/
            ├── docker-compose/
            |   ├── docker-compose.yml
            |   └── 
            ├── images/
            |   ├── nginx/
            |   |   ├── Dockerfile
            |   |   └── 
            |   └── 
            ├── .env
            └── .env.example
        
        2 và các biến ENV bắt buộc
    • Hình ảnh
      • hình ảnh PHP
        • ENV so với ARG
      • Quy ước đặt tên hình ảnh
      • Môi trường và xây dựng mục tiêu
  • Makefile
    • .
      └── .docker/
          ├── docker-compose/
          |   ├── docker-compose.yml
          |   └── 
          ├── images/
          |   ├── nginx/
          |   |   ├── Dockerfile
          |   |   └── 
          |   └── 
          ├── .env
          └── .env.example
      
      3 bao gồm
    • biến được chia sẻ.
      .
      └── .docker/
          ├── docker-compose/
          |   ├── docker-compose.yml
          |   └── 
          ├── images/
          |   ├── nginx/
          |   |   ├── Dockerfile
          |   |   └── 
          |   └── 
          ├── .env
          └── .env.example
      
      4
      • sửa đổi thủ công
    • Thực thi các tham số bắt buộc
  • Tạo + Docker = Memorystore cho Redis [GCP] hoặc ElastiCache cho Redis [AWS]
  • mysql => Cloud SQL cho MySQL [GCP] hoặc RDS cho MySQL [AWS]

Các thùng chứa còn lại được định nghĩa trong các thư mục con tương ứng của chúng trong thư mục

curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
77, e. g. hình ảnh cho vùng chứa ________ 478 được tạo thông qua ________ 479 nằm trong
.
└── .docker/
    ├── docker-compose/
    |   ├── docker-compose.yml
    |   └── 
    ├── images/
    |   ├── nginx/
    |   |   ├── Dockerfile
    |   |   └── 
    |   └── 
    ├── .env
    └── .env.example
70

hình ảnh PHP

Chúng tôi cần 3 hình ảnh PHP khác nhau [fpm, công nhân, ứng dụng] và sử dụng cách tiếp cận hơi khác so với trong Cấu trúc thiết lập Docker cho Dự án PHP

Thay vì sử dụng các hình ảnh cơ sở PHP chính thức [i. e. cli hoặc fpm], chúng tôi sử dụng hình ảnh cơ sở núi cao "đơn giản" và cài đặt PHP và các tiện ích mở rộng cần thiết theo cách thủ công trong đó. Điều này cho phép chúng tôi xây dựng một hình ảnh cơ sở chung cho tất cả các hình ảnh PHP. Những lợi ích

  • một vị trí trung tâm cho các công cụ và cấu hình được chia sẻ [không cần thư mục
    .
    └── .docker/
        ├── docker-compose/
        |   ├── docker-compose.yml
        |   └── 
        ├── images/
        |   ├── nginx/
        |   |   ├── Dockerfile
        |   |   └── 
        |   └── 
        ├── .env
        └── .env.example
    
    71 nữa]
  • giảm kích thước hình ảnh khi đẩy các hình ảnh riêng lẻ [hình ảnh cơ sở được nhận dạng là một lớp và do đó "đã tồn tại"]
  • cài đặt tiện ích mở rộng qua
    curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
    32 nhanh hơn rất nhiều so với qua
    .
    └── .docker/
        ├── docker-compose/
        |   ├── docker-compose.yml
        |   └── 
        ├── images/
        |   ├── nginx/
        |   |   ├── Dockerfile
        |   |   └── 
        |   └── 
        ├── .env
        └── .env.example
    
    73

Cách tiếp cận mới này có hai nhược điểm lớn

  • chúng tôi phụ thuộc vào chu kỳ phát hành của PHP [và các phần mở rộng PHP]
  • quá trình xây dựng hình ảnh phức tạp hơn, bởi vì chúng ta phải xây dựng hình ảnh cơ sở trước khi có thể xây dựng hình ảnh cuối cùng

May mắn thay, cả hai vấn đề đều có thể được giải quyết khá dễ dàng

  • codecasts/php-alpine duy trì một kho lưu trữ
    .
    └── .docker/
        ├── docker-compose/
        |   ├── docker-compose.yml
        |   └── 
        ├── images/
        |   ├── nginx/
        |   |   ├── Dockerfile
        |   |   └── 
        |   └── 
        ├── .env
        └── .env.example
    
    74 với các phiên bản PHP mới nhất cho alpine
  • chúng tôi sử dụng mục tiêu
    curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
    35 chuyên dụng để xây dựng hình ảnh thay vì gọi trực tiếp
    curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
    73 - điều này cho phép chúng tôi xác định "thứ tự xây dựng" [cơ sở trước, phần còn lại sau] trong khi vẫn chỉ phải chạy một lệnh duy nhất với tư cách là nhà phát triển [xem Đảm bảo việc xây dựng

ENV so với ARG

Tôi đã nhận thấy rằng một số đối số xây dựng được yêu cầu trong nhiều vùng chứa PHP, e. g. tên của người dùng ứng dụng được xác định trong biến ENV

.
└── .docker/
    ├── docker-compose/
    |   ├── docker-compose.yml
    |   └── 
    ├── images/
    |   ├── nginx/
    |   |   ├── Dockerfile
    |   |   └── 
    |   └── 
    ├── .env
    └── .env.example
8. Tên người dùng là cần thiết

  • trong hình ảnh cơ sở để tạo người dùng
  • trong ảnh fpm để xác định người dùng chạy các quy trình fpm [xem
    .
    └── .docker/
        ├── docker-compose/
        |   ├── docker-compose.yml
        |   └── 
        ├── images/
        |   ├── nginx/
        |   |   ├── Dockerfile
        |   |   └── 
        |   └── 
        ├── .env
        └── .env.example
    
    78]
  • trong hình ảnh công nhân để xác định người dùng chạy các quy trình công nhân [ xem
    .
    └── .docker/
        ├── docker-compose/
        |   ├── docker-compose.yml
        |   └── 
        ├── images/
        |   ├── nginx/
        |   |   ├── Dockerfile
        |   |   └── 
        |   └── 
        ├── .env
        └── .env.example
    
    79]

Thay vì chuyển tên cho tất cả các hình ảnh thông qua đối số xây dựng, tôi. e

  • xác định nó một cách rõ ràng dưới
    .
    └── .docker/
        ├── docker-compose/
        |   ├── docker-compose.yml
        |   └── 
        ├── images/
        |   ├── nginx/
        |   |   ├── Dockerfile
        |   |   └── 
        |   └── 
        ├── .env
        └── .env.example
    
    70 trong tệp
    curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
    75
  • "truy xuất" nó trong Dockerfile qua
    .
    └── .docker/
        ├── docker-compose/
        |   ├── docker-compose.yml
        |   └── 
        ├── images/
        |   ├── nginx/
        |   |   ├── Dockerfile
        |   |   └── 
        |   └── 
        ├── .env
        └── .env.example
    
    72

Tôi đã chọn cung cấp tên người dùng dưới dạng biến

.
└── .docker/
    ├── docker-compose/
    |   ├── docker-compose.yml
    |   └── 
    ├── images/
    |   ├── nginx/
    |   |   ├── Dockerfile
    |   |   └── 
    |   └── 
    ├── .env
    └── .env.example
73 trong hình ảnh cơ sở thông qua

curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
3

và do đó có thể truy cập nó trực tiếp trong các hình ảnh con, bây giờ tôi có thể viết

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
7

thay vì

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/fix-docker-permissions.sh | sh
9

Tôi không chắc chắn 100% rằng tôi thích cách tiếp cận này vì tôi ít nhiều "lạm dụng" các biến ENV theo cách mà chúng có thể không được dự định ["Tại sao tên người dùng cần được lưu trữ dưới dạng biến ENV?"] -

Quy ước đặt tên hình ảnh

Xác định tên đủ điều kiện cho hình ảnh sẽ giúp việc tham khảo hình ảnh sau này dễ dàng hơn nhiều, e. g. khi đẩy chúng vào sổ đăng ký

Quy ước đặt tên cho hình ảnh là

.
└── .docker/
    ├── docker-compose/
    |   ├── docker-compose.yml
    |   └── 
    ├── images/
    |   ├── nginx/
    |   |   ├── Dockerfile
    |   |   └── 
    |   └── 
    ├── .env
    └── .env.example
74, e. g

curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
7

và nó được dùng làm giá trị cho

.
└── .docker/
    ├── docker-compose/
    |   ├── docker-compose.yml
    |   └── 
    ├── images/
    |   ├── nginx/
    |   |   ├── Dockerfile
    |   |   └── 
    |   └── 
    ├── .env
    └── .env.example
75, e. g. cho
curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
78

.
└── .docker/
    ├── docker-compose/
    |   ├── docker-compose.yml
    |   └── 
    ├── images/
    |   ├── nginx/
    |   |   ├── Dockerfile
    |   |   └── 
    |   └── 
    ├── .env
    └── .env.example
7

Trong trường hợp bạn đang tự hỏi.

.
└── .docker/
    ├── docker-compose/
    |   ├── docker-compose.yml
    |   └── 
    ├── images/
    |   ├── nginx/
    |   |   ├── Dockerfile
    |   |   └── 
    |   └── 
    ├── .env
    └── .env.example
77 bắt nguồn từ Docker From Scratch

Môi trường và xây dựng mục tiêu

Mục tiêu cuối cùng của chúng tôi là một thiết lập mà chúng tôi có thể sử dụng cho

  • phát triển địa phương
  • trong đường dẫn CI/CD
  • trong sản xuất

và mặc dù chúng tôi cố gắng đạt được sự bình đẳng giữa các môi trường khác nhau đó, nhưng sẽ có sự khác biệt do các yêu cầu cơ bản khác nhau. e. g

  • khi sản xuất, tôi muốn có một vùng chứa bao gồm mã nguồn mà không có bất kỳ phụ thuộc thử nghiệm nào
  • trên CI Tôi muốn một vùng chứa bao gồm mã nguồn VỚI các phụ thuộc kiểm tra
  • trên cục bộ, tôi muốn một vùng chứa gắn mã nguồn từ Máy chủ của tôi [bao gồm cả các phần phụ thuộc]

Điều này được phản ánh thông qua biến môi trường

.
└── .docker/
    ├── docker-compose/
    |   ├── docker-compose.yml
    |   └── 
    ├── images/
    |   ├── nginx/
    |   |   ├── Dockerfile
    |   |   └── 
    |   └── 
    ├── .env
    └── .env.example
73. Chúng tôi sử dụng nó ở hai nơi

  1. như một phần của tên hình ảnh dưới dạng hậu tố của tên dịch vụ [xem Quy ước đặt tên hình ảnh]
  2. để chỉ định giai đoạn xây dựng mục tiêu

Xem tệp

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/fix-docker-permissions.sh | sh
94 chẳng hạn

.
└── .docker/
    ├── docker-compose/
    |   ├── docker-compose.yml
    |   └── 
    ├── images/
    |   ├── nginx/
    |   |   ├── Dockerfile
    |   |   └── 
    |   └── 
    ├── .env
    └── .env.example
7

Sử dụng nhiều mục tiêu trong cùng một Dockerfile cho phép chúng tôi giữ một cơ sở chung nhưng cũng bao gồm các hướng dẫn cụ thể về môi trường. Xem Dockerfile của hình ảnh

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
300 chẳng hạn

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
30
  • đầu tiên nó xác định giai đoạn
    curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
    301 bao gồm phần mềm cần thiết trong mọi môi trường
  • và sau đó xác định một giai đoạn
    curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/fix-docker-permissions.sh | sh
    93 bổ sung thêm một
    curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
    303 giúp chúng tôi gỡ lỗi các sự cố kết nối

Sau khi quá trình xây dựng cho

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/fix-docker-permissions.sh | sh
93 kết thúc, chúng tôi kết thúc với một hình ảnh có tên là
curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
305 đã sử dụng giai đoạn xây dựng
curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/fix-docker-permissions.sh | sh
93 làm giai đoạn xây dựng mục tiêu

Makefile

Trong phần sau tôi sẽ giới thiệu một vài lệnh, e. g. để xây dựng và vận hành container. Và thành thật mà nói, tôi thấy hơi khó để ghi nhớ chúng mà không cần phải tìm kiếm các lựa chọn và lập luận chính xác. Tôi thường tạo một hàm trợ giúp hoặc bí danh trong tệp

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
307 cục bộ của mình trong tình huống như vậy - nhưng điều đó sẽ không có sẵn cho các thành viên khác trong nhóm khi đó và nó sẽ rất cụ thể đối với dự án này

Thay vào đó, chúng tôi sẽ sử dụng Makefile tự tạo tài liệu đóng vai trò là điểm vào trung tâm trong ứng dụng. Vì Makefiles có xu hướng phát triển theo thời gian, nên tôi đã áp dụng một số chiến lược để giữ cho chúng "lành mạnh" thông qua các biến bao gồm, chia sẻ và xử lý lỗi tốt hơn

.
└── .docker/
    ├── docker-compose/
    |   ├── docker-compose.yml
    |   └── 
    ├── images/
    |   ├── nginx/
    |   |   ├── Dockerfile
    |   |   └── 
    |   └── 
    ├── .env
    └── .env.example
3 bao gồm

Theo thời gian, thiết lập

curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
35 sẽ phát triển đáng kể, do đó chúng tôi chia nó thành nhiều tệp
curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
310 trong thư mục
curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
37. Các tệp riêng lẻ được đánh số trước để đảm bảo thứ tự của chúng khi chúng tôi đưa chúng vào
curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
36 chính thông qua

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
31
curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
32

biến được chia sẻ.
.
└── .docker/
    ├── docker-compose/
    |   ├── docker-compose.yml
    |   └── 
    ├── images/
    |   ├── nginx/
    |   |   ├── Dockerfile
    |   |   └── 
    |   └── 
    ├── .env
    └── .env.example
4

Chúng tôi cố gắng cung cấp các biến dùng chung ở đây, vì sau đó chúng tôi có thể chuyển chúng vào các lệnh riêng lẻ dưới dạng tiền tố, e. g

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
33

Điều này sẽ làm cho

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
314 có sẵn dưới dạng biến môi trường thành
curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
315

Các biến được chia sẻ được sử dụng bởi các thành phần khác nhau và chúng tôi luôn cố gắng chỉ duy trì một nguồn sự thật duy nhất. Một ví dụ sẽ là biến

curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
316 mà chúng ta cần xác định tên hình ảnh của hình ảnh docker trong tệp
curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
75 cũng như khi đẩy/kéo/triển khai hình ảnh thông qua tạo mục tiêu sau này. Trong trường hợp này, biến được yêu cầu bởi
curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
35 cũng như
curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
73 và cách thiết lập được giải thích trong phần Make + Docker = đảm bảo rằng
curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
78 và
curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
374 đang hoạt động
  • chứa 3 "tuyến đường" khác nhau
    • http. //ứng dụng. local?dispatch=some-job-id
      • gửi một "công việc" mới với id
        curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
        375 trên hàng đợi để một công nhân nhận
        • => đảm bảo rằng
          curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
          374 có thể nói chuyện với
          curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
          377
    • http. //ứng dụng. địa phương?hàng đợi
      • hiển thị nội dung của hàng đợi
    • http. //ứng dụng. cục bộ?db
      • hiển thị nội dung của cơ sở dữ liệu
        • => đảm bảo rằng
          curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
          374 có thể nói chuyện với
          curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
          371
  • curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
    380
    • được bắt đầu dưới dạng quy trình daemon trong vùng chứa
      curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
      381
    • kiểm tra cơ sở dữ liệu redis ________ 2382 để tìm khóa ________ 2383 mỗi giây
    • nếu một giá trị được tìm thấy, nó sẽ được lưu trữ trong bảng
      curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
      354 của cơ sở dữ liệu
      • => đảm bảo rằng
        curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
        381 có thể nói chuyện với
        curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
        377 và
        curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
        371
  • Một kịch bản thử nghiệm đầy đủ được xác định trong

    curl -fsSL  //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/docker.sh | sh
    388 và giống như thế này

    .
    └── .docker/
        ├── docker-compose/
        |   ├── docker-compose.yml
        |   └── 
        ├── images/
        |   ├── nginx/
        |   |   ├── Dockerfile
        |   |   └── 
        |   └── 
        ├── .env
        └── .env.example
    
    1

    kế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ó một thiết lập docker đang chạy và phương tiện để "điều khiển" nó một cách thuận tiện thông qua

    curl //gist.githubusercontent.com/Shelob9/f981e8fee4e80aec383442df7838de7e/raw/b4359b698c6be584d259dac68ae348d4e6e9bf8a/nvm16.sh -fsSL  | sh
    35

    Trong phần tiếp theo của hướng dẫn này, chúng tôi sẽ định cấu hình PhpStorm làm IDE của chúng tôi để sử dụng thiết lập docker

    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

    Họ

    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

    Làm cách nào để cài đặt PHP trong bộ chứa Docker?

    Thiết lập bộ chứa tác nhân PHP . Ví dụ: sử dụng hình ảnh Docker đã xuất bản như php. 7. 1. Để cài đặt tác nhân, hãy tải xuống gói tác nhân PHP từ trang web tải xuống tệp tar của New Relic và chạy tập lệnh newrelic-install với đối số cài đặt .

    Làm cách nào để cài đặt các tiện ích mở rộng PHP trong Docker?

    Dễ dàng cài đặt tiện ích mở rộng PHP trong hình ảnh PHP Docker chính thức .
    Tải xuống tập lệnh một cách nhanh chóng. Với Dockerfile. .
    Sao chép tập lệnh từ hình ảnh Docker. .
    Cài đặt các phiên bản cụ thể của tiện ích mở rộng. .
    Cài đặt từ mã nguồn. .
    cài đặt trình soạn nhạc. .
    Sự cố với chứng chỉ Let's Encrypt

    Làm cách nào để triển khai PHP trên Docker?

    Bước 1. Cấu hình môi trường làm việc. Một ứng dụng dựa trên docker cơ bản bao gồm nhiều vùng chứa. .
    Bước 2. Định cấu hình bộ chứa PHP. .
    Bước 3. Thực thi các lệnh bên trong vùng chứa. .
    Bước 4. Định cấu hình bộ chứa Nginx. .
    Bước 5. Cấu hình vùng chứa MySQL. .
    Bước 6. Xây dựng ứng dụng PHP

    Docker có cần PHP không?

    Bạn thậm chí không cần cài đặt PHP hay NGINX trên chính máy chủ . Chúng sẽ được Docker tự động cài đặt khi bạn khởi chạy ứng dụng. Bạn có thể chạy cùng một hình ảnh trên máy phát triển của mình.

    Chủ Đề