Docker-php apache

Cách đơn giản nhất để đăng nhập vào bộ chứa ứng dụng là sử dụng lệnh

docker pull romeoz/docker-apache-php:7.1
4 để đính kèm một quy trình mới vào bộ chứa đang chạy

docker exec -it app bash

Phát triển/Kiên trì

Để phát triển, một tập nên được đặt tại

docker pull romeoz/docker-apache-php:7.1
5

Lệnh chạy được cập nhật trông như thế này

docker run --name app -d -p 8080:80 \
  -v /host/to/path/app:/var/www/app/ \
  romeoz/docker-apache-php

Điều này sẽ làm cho sự phát triển

Đã liên kết với vùng chứa khác

Ví dụ, sẽ liên kết với RDBMS PostgreSQL

docker network create pg_net

docker run --name db -d romeoz/docker-postgresql

Chạy vùng chứa ứng dụng

docker run --name app -d -p 8080:80 \
  --net pg_net \
  -v /host/to/path/app:/var/www/app/ \
  romeoz/docker-apache-php

Thêm tiện ích mở rộng PHP

Bạn có thể sử dụng một trong hai lựa chọn để cài đặt các tiện ích mở rộng php cần thiết

  1. docker pull romeoz/docker-apache-php:7.1
    6

  2. Tạo vùng chứa của bạn dựa trên hiện tại. Nội dung Dockerfile

FROM romeoz/docker-apache-php:5.6

RUN apt-get update \
    && apt-get install -y php-mongo \
    && rm -rf /var/lib/apt/lists/* 

WORKDIR /var/www/app/

EXPOSE 80 443

CMD ["/sbin/entrypoint.sh"]

Bước tiếp theo,

________số 8

Xem tiện ích mở rộng php đã cài đặt.

docker pull romeoz/docker-apache-php:7.1
7

Tiện ích mở rộng PHP "Mcrypt" đã bị LOẠI BỎ trong PHP 7. 2. Sử dụng Natri hoặc OpenSSL

ghi nhật ký

Tất cả các bản ghi được chuyển tiếp đến thiết bị xuất chuẩn và sterr. Bạn đã sử dụng lệnh

docker pull romeoz/docker-apache-php:7.1
8

docker pull romeoz/docker-apache-php:7.1
0

####Tách nhật ký

Sau đó, bạn có thể chỉ cần tách thiết bị xuất chuẩn & thiết bị xuất chuẩn của vùng chứa bằng cách tạo các luồng riêng biệt và gửi chúng tới các tệp

Hướng dẫn Docker này giải thích cách chạy ứng dụng PHP bằng Apache và chứng chỉ SSL thực trên mọi PC phát triển Windows, mac OS hoặc Linux

PHP có thể không phải là công nghệ thời thượng nhất nhưng nó được nhiều nhà phát triển và dự án sử dụng. Theo W3Techs, PHP được sử dụng trên 78% tất cả các trang web. Đó có thể là một đánh giá thấp vì các trang web có thể không – và lý tưởng nhất là không nên – công bố ngăn xếp của họ. Một thống kê đáng tin cậy hơn là WordPress cung cấp 43% web và CMS sử dụng PHP

Tôi hiếm khi bắt tay vào các dự án PHP mới nhưng có nhiều trang web và ứng dụng cũ với các thư mục chứa đầy tệp

docker exec -it app bash
21. Cài đặt PHP có thể tốn thời gian và dễ bị lỗi. Có nhiều phiên bản khác nhau và bạn sẽ gặp phải sự phức tạp hơn nữa khi tích hợp PHP với máy chủ web như Apache để phù hợp với giải pháp lưu trữ thực

Ngoài ra, người dùng Windows được cung cấp một loạt các tùy chọn khó hiểu mặc dù tình hình sắp trở nên dễ dàng hơn – Microsoft đang bỏ hỗ trợ PHP trong Windows

“Chúng tôi sẽ không hỗ trợ PHP cho Windows ở bất kỳ khả năng nào đối với phiên bản 8. 0 và hơn thế nữa. ”
Dale Hirt, Microsoft

Ai đó có khả năng biên dịch các phiên bản Windows và Hệ thống con Windows cho Linux cung cấp một tùy chọn khác. Tuy nhiên, vấn đề vẫn là việc duy trì một hoặc nhiều môi trường phát triển PHP có thể khó khăn…

…trừ khi bạn sử dụng Docker

Tại sao nên sử dụng Docker?

Docker là một công cụ có thể cài đặt, cấu hình và quản lý phần mềm. Nó đặt một trình bao quanh các tệp thực thi được gọi là vùng chứa. Các thùng chứa được khởi chạy từ các hình ảnh được định cấu hình trước, là ảnh chụp nhanh của một tệp thực thi và các thư viện của nó

Cuốn sách và video về khóa học “Docker dành cho nhà phát triển web” của tôi giải thích ngắn gọn cách áp dụng Docker cho các dự án mới và dự án hiện có của bạn

Docker cung cấp các hình ảnh Apache và PHP dựng sẵn có thể tải xuống và chạy trên bất kỳ hệ điều hành nào có cài đặt Docker (xem hướng dẫn cài đặt Docker)

Các phần sau đây mô tả cách chuẩn bị môi trường phát triển Docker có thể thực thi các tệp PHP nằm trên PC chủ của bạn

Tạo chứng chỉ SSL

Các ứng dụng web sử dụng HTTPS để đảm bảo giao tiếp giữa máy khách và máy chủ được mã hóa và không thể bị chặn. Google cũng phạt các trang web nội dung vẫn còn trên HTTP

Để phát triển địa phương, các nhà phát triển hoặc

  1. Sử dụng HTTP
    Điều này có nghĩa là phiên bản sản xuất và phiên bản cục bộ khác nhau. Có thể khó phát hiện các vấn đề hơn như liên kết đến nội dung không an toàn.

  2. Hoặc sử dụng chứng chỉ tự ký (giả mạo)
    Chứng chỉ này giống với phiên bản sản xuất hơn nhưng trình duyệt vẫn xử lý các yêu cầu theo cách khác. Ví dụ: nội dung SSL giả mạo không được lưu vào bộ nhớ cache.

Tùy chọn thứ ba ít được biết đến hơn là mkcert. Điều này tạo ra một cơ quan có thẩm quyền và chứng chỉ SSL mới đáng tin cậy tại địa phương. Đối với trình duyệt, kết nối HTTPS hoàn toàn an toàn mặc dù chạy trên miền cục bộ

Việc định cấu hình chứng chỉ chỉ cần được thực hiện một lần và việc tạo chúng trên máy cục bộ của bạn cũng sẽ hoạt động trong bộ chứa Docker hoặc WSL2. Thực hiện theo sau đó cài đặt cơ quan cấp chứng chỉ cục bộ mới trong trình duyệt của bạn

docker exec -it app bash
3

Firefox yêu cầu một số cấu hình bổ sung

  1. Định vị tệp
    docker exec -it app bash
    22 đã tạo bằng cách nhập
    docker exec -it app bash
    23 vào thiết bị đầu cuối của bạn
  2. Mở menu của Firefox và chọn Tùy chọn, rồi Quyền riêng tư & Bảo mật. Cuộn xuống dưới cùng và nhấp vào Xem chứng chỉ. Chọn tab Cơ quan, nhấp vào Nhập..., mở tệp
    docker exec -it app bash
    22 và khởi động lại trình duyệt

Bây giờ hãy tạo chứng chỉ phát triển đáng tin cậy cục bộ cho miền phát triển của bạn

docker exec -it app bash
2

Sử dụng

docker exec -it app bash
25 dễ dàng hơn nhưng bạn có thể tạo bất kỳ tên miền nào miễn là nó được tham chiếu trong tệp
docker exec -it app bash
26 của bạn

Đổi tên các tệp đã tạo

  • docker exec -it app bash
    27 cho chứng chỉ SSL và
  • docker exec -it app bash
    28 cho tệp khóa chứng chỉ SSL

Tạo một thư mục ở đâu đó trên hệ thống của bạn, e. g.

docker exec -it app bash
29 và sao chép hai tệp
docker pull romeoz/docker-apache-php:7.1
30 vào đó

cấu hình apache

Tạo một tệp có tên

docker pull romeoz/docker-apache-php:7.1
31 trong cùng thư mục với cấu hình HTTP HTTP và HTTPS sau đây. Thao tác này đặt web thành root
docker pull romeoz/docker-apache-php:7.1
32 và tham chiếu chứng chỉ SSL bạn đã tạo bằng mkcert

docker pull romeoz/docker-apache-php:7.1
3

cấu hình docker

Tạo một tệp có tên

docker pull romeoz/docker-apache-php:7.1
33 trong thư mục của bạn và thêm nội dung sau để xây dựng hình ảnh PHP và Apache. Bạn có thể chọn từ hàng tá nhưng ví dụ này sử dụng
docker pull romeoz/docker-apache-php:7.1
34 có phiên bản PHP 8 mới nhất trên Apache 2. 4

docker pull romeoz/docker-apache-php:7.1
9

docker pull romeoz/docker-apache-php:7.1
33

  1. Kích hoạt SSL của Apache và viết lại các mô-đun. Các mô-đun khác có thể được kích hoạt nếu cần thiết
  2. Sao chép tệp cấu hình phát triển PHP sang
    docker pull romeoz/docker-apache-php:7.1
    36 để các lỗi và cảnh báo được hiển thị
  3. Tạo một thư mục
    docker pull romeoz/docker-apache-php:7.1
    37 và sao chép các tệp chứng chỉ SSL
    docker pull romeoz/docker-apache-php:7.1
    30
  4. Sao chép
  5. Hiển thị các cổng 80 và 443 cho HTTP và HTTPS tương ứng

Nếu cần, bạn có thể xác định tệp

docker pull romeoz/docker-apache-php:7.1
36 của riêng mình và
docker pull romeoz/docker-apache-php:7.1
90 tệp đó vào hình ảnh tại
docker pull romeoz/docker-apache-php:7.1
91

Ghi chú. các lệnh

docker pull romeoz/docker-apache-php:7.1
33
docker pull romeoz/docker-apache-php:7.1
93 riêng biệt có thể được hợp nhất trên một dòng và được phân tách bằng
docker pull romeoz/docker-apache-php:7.1
94. Điều này làm cho quá trình xây dựng Docker nhanh hơn và hiệu quả hơn mặc dù mã khó đọc hơn

Xây dựng hình ảnh PHP Docker

Xây dựng hình ảnh Docker có tên

docker pull romeoz/docker-apache-php:7.1
95 từ
docker pull romeoz/docker-apache-php:7.1
33 của bạn bằng cách điều hướng đến thư mục trong một thiết bị đầu cuối và nhập

docker network create pg_net

docker run --name db -d romeoz/docker-postgresql
2

(Kỳ cuối

docker pull romeoz/docker-apache-php:7.1
97 quan trọng. )

Giả sử bạn không gặp lỗi, một Docker image mới sẽ được tạo. Chạy

docker pull romeoz/docker-apache-php:7.1
98 để xem
docker pull romeoz/docker-apache-php:7.1
95 trong danh sách hình ảnh

Khởi chạy một bộ chứa PHP

Bây giờ bạn có thể bắt đầu bộ chứa Docker từ hình ảnh

docker pull romeoz/docker-apache-php:7.1
95. Điều hướng đến bất kỳ thư mục nào chứa dự án PHP và chạy lệnh
docker network create pg_net

docker run --name db -d romeoz/docker-postgresql
21 sau

docker network create pg_net

docker run --name db -d romeoz/docker-postgresql
8

Người dùng Windows Powershell phải xóa dấu ngắt dòng và dấu gạch chéo ngược

docker network create pg_net

docker run --name db -d romeoz/docker-postgresql
22 khỏi lệnh. Ngoài ra,
docker network create pg_net

docker run --name db -d romeoz/docker-postgresql
23 tham chiếu thư mục hiện tại trên Linux và macOS. Điều này không thể được sử dụng trên Windows nên đường dẫn đầy đủ phải được chỉ định trong ký hiệu Linux, e. g

docker run --name app -d -p 8080:80 \
  --net pg_net \
  -v /host/to/path/app:/var/www/app/ \
  romeoz/docker-apache-php
1

Vùng chứa sẽ tiếp tục chạy cho đến khi dừng bằng Ctrl. Cmd + C

Ngoài ra, bạn có thể thấy việc khởi chạy bộ chứa bằng Docker Compose dễ dàng hơn. Tạo một tệp

docker network create pg_net

docker run --name db -d romeoz/docker-postgresql
24 mới trong thư mục dự án PHP với nội dung sau

docker run --name app -d -p 8080:80 \
  --net pg_net \
  -v /host/to/path/app:/var/www/app/ \
  romeoz/docker-apache-php
3

Bộ chứa Apache/PHP sau đó có thể được khởi chạy từ thư mục đó với

docker run --name app -d -p 8080:80 \
  --net pg_net \
  -v /host/to/path/app:/var/www/app/ \
  romeoz/docker-apache-php
4

và dừng lại ở một nhà ga khác với

docker run --name app -d -p 8080:80 \
  --net pg_net \
  -v /host/to/path/app:/var/www/app/ \
  romeoz/docker-apache-php
5

Chạy mã PHP

Thư mục máy chủ nơi bộ chứa Docker được khởi chạy được gắn kết vào bộ chứa tại thư mục gốc Apache

docker pull romeoz/docker-apache-php:7.1
32. Cổng tiêu chuẩn
docker network create pg_net

docker run --name db -d romeoz/docker-postgresql
26 khả dụng cho các kết nối HTTPS và cổng
docker network create pg_net

docker run --name db -d romeoz/docker-postgresql
27 chuyển tiếp sang cổng HTTP
docker network create pg_net

docker run --name db -d romeoz/docker-postgresql
28 để tránh xung đột với các ứng dụng như Skype

Bạn có thể kiểm tra việc thực thi PHP bằng một tệp

docker network create pg_net

docker run --name db -d romeoz/docker-postgresql
29 ví dụ

docker exec -it app bash
20

Khởi chạy nó trong trình duyệt của bạn tại

docker network create pg_net

docker run --name db -d romeoz/docker-postgresql
80 hoặc
docker network create pg_net

docker run --name db -d romeoz/docker-postgresql
81. Phiên bản HTTPS sẽ sử dụng nhưng, không giống như chứng chỉ tự ký, trình duyệt sẽ không đưa ra cảnh báo bảo mật

Phát triển Docker động

Một chút kiến ​​thức về Docker là tất cả những gì cần thiết để tạo ra một môi trường phát triển Apache và PHP an toàn. những lợi ích

  • bạn không cần tải xuống, cài đặt hoặc định cấu hình phần mềm bổ sung theo cách thủ công
  • hệ điều hành của bạn không thay đổi – vùng chứa không thể xung đột với các phiên bản Apache hoặc PHP khác mà bạn đã cài đặt
  • vùng chứa sẽ hoạt động giống hệt nhau trên bất kỳ hệ điều hành nào khác mà không cần sửa đổi

Cuối cùng…

Bạn không bị giới hạn bởi PHP và Apache. Docker có thể quản lý mọi máy chủ, thời gian chạy ngôn ngữ, cơ sở dữ liệu hoặc các phụ thuộc phần mềm khác mà dự án của bạn cần


Bạn có muốn một khóa học dễ theo dõi trình bày cách sử dụng Docker và tạo môi trường phát triển web thực tế trên PC Windows, macOS hoặc Linux của bạn không?

Làm cách nào để chạy Apache và PHP trong docker?

Để sử dụng và chạy hình ảnh này, bạn cần một vài lệnh docker. docker build -t my/apache-php . Lệnh này xây dựng hình ảnh Apache PHP Docker của bạn từ Dockerfile và lưu trữ nó trong sổ đăng ký cục bộ của bạn dưới tên my/apache-php. Lệnh này chạy hình ảnh docker của bạn my/Apache-php trong vùng chứa docker.

Làm cách nào để cài đặt PHP Apache trên docker?

Tạo một thư mục mới cho máy chủ cục bộ của bạn (MY_APP được sử dụng làm trình giữ chỗ)
Thêm docker-compose. yml, Dockerfile và nginx. .
Với ứng dụng đầu cuối yêu thích của bạn. cd /path/to/MY_APP (thay thế /path/to/MY_APP bằng đường dẫn đến thư mục máy chủ cục bộ của bạn được tạo ở trên

Tôi có thể chạy PHP trong docker không?

Chúng ta có thể chạy ứng dụng php bằng docker . Trong các bước sau, chúng tôi đang tạo và chạy ứng dụng php. Tạo một thư mục để sắp xếp các tệp bằng cách sử dụng lệnh sau. Xem, ảnh chụp màn hình của lệnh trên.

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 vùng chứa Nginx. .
Bước 5. Cấu hình bộ chứa MySQL. .
Bước 6. Xây dựng ứng dụng PHP