Home  >  Article  >  Backend Development  >  Example introduction: Use Docker to quickly build a multi-version PHP development environment

Example introduction: Use Docker to quickly build a multi-version PHP development environment

WBOY
WBOYforward
2022-12-28 18:03:094381browse

This article brings you relevant knowledge about PHP, which mainly introduces the relevant content on how to use docker to quickly build a multi-version PHP development environment. Let’s take a look at it together and hope it will be helpful to everyone. helpful.

Example introduction: Use Docker to quickly build a multi-version PHP development environment

## Recommended study: "

PHP Video Tutorial"

Software used in the article:

  • Mac: 11.4 (macOS Big Sur), processor: Intel Core.

  • Docker: 3.3.3

Example introduction: Use Docker to quickly build a multi-version PHP development environment## Target

Support PHP 5.6.x Environment

Supports PHP 7.2.x Environment

Download

Docker software download and installation, without too much explanation, just install it step by step.

Download address: Docker official website https://www.docker.com/products/docker-desktop

Agent settings

"registry-mirrors" : [
    "http://registry.docker-cn.com",
    "http://hub-mirror.c.163.com"
  ],

Example introduction: Use Docker to quickly build a multi-version PHP development environment Configure environment

PHP 7.2.x, occupy local port 8081

    Start docker;
  • Download the compressed package: php7-2-x.zip and decompress it;
  • Enter the php7-2-x directory and run docker-compose up directly;
  • Browser input: http://127.0.0.1:8081/;

Example introduction: Use Docker to quickly build a multi-version PHP development environment##PHP 5.6.x , occupying local port 8082

Start docker;
  • Download the compressed package: php5-6-x.zip and decompress it;
  • Enter the php5-6-x directory and run docker-compose up directly;
  • Browser input: http:// 127.0.0.1:8082/;

Port mappingExample introduction: Use Docker to quickly build a multi-version PHP development environment

local.php72.com -> 127.0.0.1:8081

Because port mapping cannot be done in the /etc/hosts file, other tools are needed.

The tool I used is the Chrome browser plug-in: Simple Proxy.

Download method:

Download from the Chrome App Store and search for Simple Proxy.
  • Load the local extension, download address: chrome-simply-proxy[2]
  • Look at the installed interface:

After successful configuration, visit http://local.php72.com/Example introduction: Use Docker to quickly build a multi-version PHP development environment

##local.php56.com - > 127.0.0.1:8082Example introduction: Use Docker to quickly build a multi-version PHP development environment

Same as above. Remarks

docker-compose related commands

docker-compose up Build container parameters [-d] for background operation

  • docker-compose start Enable container

  • docker-compose stop Stop container

  • docker- compose restart Restart the container

  • docker-compose down Delete the container

  • ##docker-compose ps View the current container status

  • php7-2-x Directory Introduction

  • ├── docker-compose.yml
    ├── log
    │   └── nginx
    │       └── local.php72.com_access.log
    ├── phpdocker
    │   ├── README.html
    │   ├── README.md
    │   ├── nginx
    │   │   └── default.conf
    │   └── php-fpm
    │       ├── Dockerfile
    │       └── php-ini-overrides.ini
    └── web
        └── phpinfo
            └── index.php
1. docker-compose.yml, the configuration file for container orchestration, the file does not need to be changed.

version: "3.1"
services:
    webserver:
      image: nginx:alpine
      container_name: php7-2-x-webserver
      working_dir: /application
      volumes:
          - .:/application
          - ./phpdocker/nginx:/etc/nginx/conf.d
      ports:
       - "8081:80"
    php-fpm:
      build: phpdocker/php-fpm
      container_name: php7-2-x-php-fpm
      working_dir: /application
      volumes:
        - .:/application
        - ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini
2. log/nginx is the log directory, including xxx_access.log and xxx_php_errors.log, and xxx is the configured virtual domain name.

3. phpdocker/nginx configures the directory for the virtual domain name. The virtual domain name configured in default.conf is local.php72.com. No need to explain too much. Everyone can understand it at a glance. Other directories and files do not need to be adjusted.

server {
    listen 80;
    server_name local.php72.com;
    client_max_body_size 108M;
    access_log /application/log/nginx/${server_name}_access.log;
    root /application/web/phpinfo;
    index index.php;
    # try to serve file directly, fallback to index.php
    location / {
        try_files $uri /index.php$is_args$args;
    }
    if (!-e $request_filename) {
        rewrite ^.*$ /index.php last;
    }
    location ~ \.php$ {
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PHP_VALUE "error_log=/application/log/nginx/${server_name}_php_errors.log";
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        include fastcgi_params;
    }
    
}

4. web is the code warehouse directory, where phpinfo is the code directory pointed to by the domain name local.php72.com.

If you want to add a new virtual domain name (local.abc.com) configuration, you only need 3 steps:

Place the code folder abc in the web directory ;

  • Add the file local.abc.com.conf and point the code directory to the abc directory in the configuration file;

  • Restart the container docker-compose restart;

  • php5-6-x directory introduction

    Same as above.

How to generate zip file?

You may have questions, how is the zip file generated? What if I want to build another version of the environment?

These files are generated online, URL: https://phpdocker.io/generator[3]

Supported PHP versions are: 5.6. x, 7.0.x, 7.1.x, 7.2.x, 7.3.x, 7.4.x, etc.

It also supports MySQL, MariaDB, Elasticsearch, etc. Example introduction: Use Docker to quickly build a multi-version PHP development environment

After selecting as needed, click Generate project archive to generate the compressed package.

The above php5-6-x.zip and php7-2-x.zip are generated in this way. They are just fine-tuned, such as configuring the log directory, web directory, etc.

Recommended learning: "PHP Video Tutorial"

The above is the detailed content of Example introduction: Use Docker to quickly build a multi-version PHP development environment. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:新亮笔记微信公众号. If there is any infringement, please contact admin@php.cn delete