Docker-php

Codefresh có thể làm việc với các dự án Php sử dụng bất kỳ framework phổ biến nào (Laravel, Symphony, CakePHp, v.v. )

Dự án php ví dụ

Bạn có thể xem dự án ví dụ tại https. //github. com/codefresh-contrib/php-composer-sample-app. Kho lưu trữ chứa một dự án Php đơn giản sử dụng trình soạn thảo làm trình quản lý gói

Dockerfile sử dụng các bản dựng nhiều giai đoạn để giảm thiểu kích thước của hình ảnh docker

Dockerfile

FROM composer:1.9.3 as vendor

WORKDIR /tmp/

COPY composer.json composer.json
COPY composer.lock composer.lock

RUN composer install \
    --ignore-platform-reqs \
    --no-interaction \
    --no-plugins \
    --no-scripts \
    --prefer-dist


FROM php:7.2-apache-stretch

COPY . /var/www/html
COPY --from=vendor /tmp/vendor/ /var/www/html/vendor/

Tạo hình ảnh Docker cho dự án Php

Một đường dẫn ví dụ cũng được cung cấp trong kho git. Nó chỉ chứa hai bước. Một bước nhân bản để tìm nạp mã và một bước xây dựng để tạo hình ảnh Docker

codefresh.yml

version: '1.0'
steps:
  main_clone:
    title: Cloning main repository...
    type: git-clone
    repo: 'codefresh-contrib/php-composer-sample-app'
    revision: master
    git: github
  MyAppDockerImage:
    title: Building Docker Image
    type: build
    image_name: my-php-image
    working_directory: ./
    tag: master
    dockerfile: Dockerfile

Khi bạn chạy đường dẫn này, Codefresh sẽ tạo hình ảnh Docker cho ứng dụng Php

Docker-php

Tạo hình ảnh docker cho php

Lưu ý rằng tất cả các phụ thuộc được tải xuống khi dockerfile được tạo

Khởi chạy hình ảnh Docker

Codefresh cũng có thể khởi chạy Docker image (sử dụng Docker swarm phía sau hậu trường). Với mỗi tài khoản Codefresh, bạn có quyền truy cập vào một số môi trường Docker giới hạn có thể lưu trữ bất kỳ hình ảnh Docker hoặc tệp soạn thảo Docker nào

Trước tiên hãy tìm hình ảnh của bạn trong

Docker-php

Khởi chạy một hình ảnh Docker

Nhấp vào nút khởi chạy và một quy trình mới sẽ chạy để triển khai

Docker-php

Lấy url môi trường

Lưu ý rằng nhật ký đường ống hiển thị URL động của ứng dụng. Chỉ cần truy cập nó bằng trình duyệt của bạn và bạn sẽ thấy kết quả

Docker-php

Xem trước ứng dụng

Lưu ý rằng các môi trường này chỉ dành cho thử nghiệm và xem trước ứng dụng của bạn khi nó được phát triển. Chúng KHÔNG dành cho mục đích sản xuất

Bộ chứa Docker làm cho ứng dụng của bạn di động trên các môi trường. Khi bạn đã có hình ảnh bộ chứa, bạn có thể sử dụng nó ở bất cứ đâu có sẵn Docker. Đây là cách chứa một ứng dụng web PHP bằng máy chủ Apache

Chúng tôi sẽ sử dụng hình ảnh PHP Docker chính thức làm cơ sở của chúng tôi. Các biến thể được cấu hình sẵn với Apache được cung cấp, vì vậy bạn sẽ không cần phải tự cài đặt máy chủ web. Hình ảnh cơ sở PHP cũng cung cấp các tiện ích tiện lợi để quản lý các phần mở rộng PHP

Tạo một Dockerfile

Docker image được tạo từ một Dockerfile. Tệp này chứa các hướng dẫn được sử dụng để xây dựng hình ảnh. Các hướng dẫn bao gồm

docker build -t my-php-site:latest .
docker run -d -p 80:80 my-php-site:latest
0, để sao chép các tệp và thư mục vào vùng chứa và
docker build -t my-php-site:latest .
docker run -d -p 80:80 my-php-site:latest
1, chạy một lệnh trong vùng chứa

Bạn có thể chạy một trang web PHP đơn giản bằng cách sao chép các tệp của nó thành một hình ảnh dựa trên

docker build -t my-php-site:latest .
docker run -d -p 80:80 my-php-site:latest
2

FROM php:8.0-apache
WORKDIR /var/www/html

COPY index.php index.php
COPY src/ src
EXPOSE 80

Dockerfile này lấy

docker build -t my-php-site:latest .
docker run -d -p 80:80 my-php-site:latest
4 và
docker build -t my-php-site:latest .
docker run -d -p 80:80 my-php-site:latest
5 từ thư mục làm việc của chúng tôi và sao chép chúng vào thư mục gốc của tài liệu Apache. Bây giờ bạn có thể xây dựng hình ảnh và bắt đầu một vùng chứa từ nó. Bạn sẽ thấy trang web của mình được phục vụ bởi Apache

docker build -t my-php-site:latest .
docker run -d -p 80:80 my-php-site:latest

Hình ảnh PHP Docker có gốc tài liệu Apache ở vị trí Debian mặc định là

docker build -t my-php-site:latest .
docker run -d -p 80:80 my-php-site:latest
6. Lệnh
docker build -t my-php-site:latest .
docker run -d -p 80:80 my-php-site:latest
7 trong Dockerfile có nghĩa là các lệnh tiếp theo sẽ được thực thi trong thư mục gốc của tài liệu

Apache tự hiển thị trên cổng máy chủ web mặc định là 80. Chỉ thị

docker build -t my-php-site:latest .
docker run -d -p 80:80 my-php-site:latest
9 trong Dockerfile chỉ ra điều này. Bằng cách hiển thị cổng một cách rõ ràng, bạn có thể sử dụng cờ
COPY my-apache-site.conf /etc/apache2/sites-available/my-apache-site.conf

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf &&
    a2enmod rewrite &&
    a2dissite 000-default &&
    a2ensite my-apache-site &&
    service apache2 restart
1 với
COPY my-apache-site.conf /etc/apache2/sites-available/my-apache-site.conf

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf &&
    a2enmod rewrite &&
    a2dissite 000-default &&
    a2ensite my-apache-site &&
    service apache2 restart
2 để tự động liên kết một cổng máy chủ ngẫu nhiên với cổng 80 của vùng chứa

Tùy chỉnh cấu hình Apache

Các hình ảnh PHP/Apache chính thức dựa trên Debian. Bạn có thể sử dụng trình quản lý gói

COPY my-apache-site.conf /etc/apache2/sites-available/my-apache-site.conf

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf &&
    a2enmod rewrite &&
    a2dissite 000-default &&
    a2ensite my-apache-site &&
    service apache2 restart
3 để thêm phần mềm bổ sung mà bạn cần

Docker-php

LIÊN QUANCách sử dụng Cron với bộ chứa Docker của bạn

Bạn cũng có toàn quyền truy cập vào các công cụ tích hợp sẵn của Apache. Bạn có thể sử dụng

COPY my-apache-site.conf /etc/apache2/sites-available/my-apache-site.conf

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf &&
    a2enmod rewrite &&
    a2dissite 000-default &&
    a2ensite my-apache-site &&
    service apache2 restart
4/_______12_______5 để quản lý các mô-đun và
COPY my-apache-site.conf /etc/apache2/sites-available/my-apache-site.conf

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf &&
    a2enmod rewrite &&
    a2dissite 000-default &&
    a2ensite my-apache-site &&
    service apache2 restart
6/______12_______7 để tương tác với máy chủ ảo

Tệp cấu hình Apache mặc định là

COPY my-apache-site.conf /etc/apache2/sites-available/my-apache-site.conf

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf &&
    a2enmod rewrite &&
    a2dissite 000-default &&
    a2ensite my-apache-site &&
    service apache2 restart
8. Thêm các dòng vào tệp này hoặc thay thế hoàn toàn để mở rộng cấu hình Apache

Một thay đổi luôn đáng thực hiện là đặt rõ ràng Apache

COPY my-apache-site.conf /etc/apache2/sites-available/my-apache-site.conf

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf &&
    a2enmod rewrite &&
    a2dissite 000-default &&
    a2ensite my-apache-site &&
    service apache2 restart
9. Điều này ngăn cảnh báo "không thể xác định tên máy chủ một cách đáng tin cậy" thường xuất hiện trong nhật ký vùng chứa của bạn

Bạn cũng thường muốn thêm máy chủ ảo Apache của riêng mình. Điều này cho phép bạn thiết lập cấu hình tùy chỉnh ngoài những gì mà trang web Apache

docker-php-ext-install pdo_mysql
0 cung cấp. Đây là cách thực hiện những thay đổi đó

COPY my-apache-site.conf /etc/apache2/sites-available/my-apache-site.conf

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf &&
    a2enmod rewrite &&
    a2dissite 000-default &&
    a2ensite my-apache-site &&
    service apache2 restart

Ví dụ này vô hiệu hóa trang mặc định, kích hoạt trang tùy chỉnh và khởi động lại Apache để áp dụng các thay đổi. Mô-đun

docker-php-ext-install pdo_mysql
1 cũng được kích hoạt, cho phép sử dụng chỉ thị
docker-php-ext-install pdo_mysql
2 trong tệp
docker-php-ext-install pdo_mysql
3. Bạn cũng có thể muốn kích hoạt các mô-đun khác, chẳng hạn như
docker-php-ext-install pdo_mysql
4 nếu cấu hình của bạn sẽ tương tác với các tiêu đề phản hồi

Thêm phần mở rộng PHP

Hình ảnh Docker PHP đi kèm với các tiện ích quản lý tiện ích mở rộng được tích hợp sẵn. Một số tiện ích mở rộng được bật theo mặc định – bạn có thể kiểm tra những tiện ích mở rộng nào khả dụng bằng cách chạy

docker-php-ext-install pdo_mysql
5 trong vùng chứa đang chạy

Có thể cài đặt nhiều tiện ích mở rộng phổ biến bằng cách sử dụng

docker-php-ext-install pdo_mysql
6

docker-php-ext-install pdo_mysql

Một số tiện ích mở rộng cần được định cấu hình trước khi có thể cài đặt chúng. Bạn có thể sử dụng

docker-php-ext-install pdo_mysql
7 để thực hiện cấu hình cài đặt sẵn. Các tùy chọn khả dụng sẽ thay đổi theo tiện ích mở rộng. Đọc trang hướng dẫn của tiện ích mở rộng để xác định các cờ bạn có thể cung cấp

RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ &&
    docker-php-ext-install gd

Bạn cũng có thể sử dụng các tiện ích mở rộng được phân phối qua PECL. Các tiện ích mở rộng này yêu cầu quy trình cài đặt hai bước. Cài đặt gói PECL trước, sau đó sử dụng

docker-php-ext-install pdo_mysql
8 để đăng ký tiện ích mở rộng với bản cài đặt PHP của bạn

RUN apt-get install -y libmcached-dev zlib1g-dev &&
    pecl install memcached-3.1.5 &&
    docker-php-ext-enable memcached

Cấu hình PHP

Các hình ảnh Docker được cấu hình sẵn để tải các tệp cấu hình PHP được tìm thấy trong

docker-php-ext-install pdo_mysql
9. Thêm tệp
RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ &&
    docker-php-ext-install gd
0 của riêng bạn vào thư mục này. PHP sẽ bao gồm nội dung của nó khi chạy, ghi đè lên bất kỳ giá trị hiện có nào. Đây là cách được đề xuất để mở rộng cấu hình mặc định

Đường dẫn thư mục cấu hình có thể thay đổi trong tương lai. Bạn có thể lấy vị trí hiện tại của nó bằng cách sử dụng biến môi trường

RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ &&
    docker-php-ext-install gd
1. Nó hiện đang phân giải thành
docker-php-ext-install pdo_mysql
9

CÓ LIÊN QUAN. Cách chạy các ứng dụng GUI trong Docker Container

Sử dụng Trình soạn thảo

Trình soạn nhạc không khả dụng theo mặc định. Composer là một nỗ lực của cộng đồng tồn tại độc lập với PHP. Bạn cần cài đặt thủ công nếu muốn sử dụng nó trong Docker container

Cách tốt nhất để sử dụng Trình soạn thảo trong các bản dựng của bạn là tham khảo hình ảnh Docker của chính công cụ thông qua bản dựng nhiều giai đoạn. Sử dụng

RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ &&
    docker-php-ext-install gd
3 để đưa tệp nhị phân Trình soạn thảo vào bộ chứa PHP của bạn;

COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
COPY composer.json composer.json
COPY composer.lock composer.lock
RUN composer install --no-dev

Sử dụng phương pháp này làm giảm sự phức tạp. Bạn không cần tải xuống và chạy tập lệnh cài đặt Composer. Bằng cách tham khảo

RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ &&
    docker-php-ext-install gd
4, Docker sẽ lấy hình ảnh và sau đó sao chép tệp nhị phân của Trình soạn thảo

Tập lệnh điểm vào tùy chỉnh

Bạn có thể cần sử dụng tập lệnh điểm vào tùy chỉnh nếu muốn chạy di chuyển ứng dụng trước khi thời gian chạy của máy chủ chính bắt đầu. Bạn có thể ghi đè vùng chứa

RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ &&
    docker-php-ext-install gd
5 để sử dụng trình tự khởi động của riêng bạn

Bạn có thể làm cho quá trình thực thi vùng chứa tiếp tục như bình thường bằng cách thực thi

RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ &&
    docker-php-ext-install gd
6. Thao tác này sẽ chạy Apache ở nền trước, ngăn không cho vùng chứa thoát ra sau khi tập lệnh điểm vào hoàn tất

ENTRYPOINT ["bash", "/Docker.sh"]

RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ &&
    docker-php-ext-install gd
7 nội dung

php app.php my-migration-command    # run migrations
service cron start                  # start some services
exec apache2-foreground             # main execution

CÓ LIÊN QUAN. Cách cài đặt Docker và Docker Compose trên Linux

Phần kết luận

Dockerising một dịch vụ web PHP rất đơn giản khi sử dụng các hình ảnh chính thức. Bạn có thể dễ dàng cấu hình Apache và PHP với các tiện ích mở rộng và các tệp cấu hình của riêng bạn

Rất có thể bạn sẽ gặp khó khăn khi cố gắng sử dụng các addon cộng đồng của bên thứ ba như Composer. Chúng không được bao gồm theo mặc định, vì vậy bạn sẽ cần sử dụng các bản dựng Docker nhiều giai đoạn hoặc quy trình cài đặt thủ công

Việc sử dụng Docker mang lại cho ứng dụng của bạn tính linh hoạt về cách thức và vị trí ứng dụng được triển khai. Với hình ảnh của bạn, bạn có thể tạo ra một bản cài đặt đang hoạt động cho trang web của mình chỉ bằng cách sử dụng

RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ &&
    docker-php-ext-install gd
8 và
COPY my-apache-site.conf /etc/apache2/sites-available/my-apache-site.conf

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf &&
    a2enmod rewrite &&
    a2dissite 000-default &&
    a2ensite my-apache-site &&
    service apache2 restart
2 trong thiết bị đầu cuối của bạn

PHP có thể chạy trên docker không?

Chúng ta có thể chạy ứng dụng php bằng docker .

Docker được sử dụng để làm gì trong PHP?

Docker cho phép bạn đặt ứng dụng của mình với mỗi dịch vụ chạy dưới dạng microservice . Bằng cách này, bạn đặt một tệp YML duy nhất sẽ tách biệt tất cả các dịch vụ mà ứng dụng của bạn cần để chạy. File setup PHP Apache server và MySQL database cho các bạn.

Làm cách nào để thiết lập PHP trong docker?

Để thiết lập bộ chứa tác nhân PHP cho Docker. Đảm bảo cài đặt PHP có sẵn trong vùng chứa . 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 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 để chạy dự án PHP trên docker?

Chạy hình ảnh Docker. Xây dựng hình ảnh khách hàng để chạy chương trình. Sử dụng Docker Compose để thiết lập môi trường nhà phát triển. .
Đăng ký để Unsplash
Chuyển đến Ứng dụng
Chọn Ứng dụng mới
Xem lại và chấp nhận Điều khoản sử dụng
Đặt tên cho ứng dụng
Sao chép Khóa truy cập và Khóa bí mật được hiển thị