How to install php project with docker
How to install php project with docker: 1. Download the required image file; 2. Prepare the nginx configuration file php.conf in the nginx/conf directory; 3. Create the docker-compose.yml orchestration file; 4. Install the extension.
The operating environment of this article: macOS10.15 system, PHP5.6 version, macbook pro 2020 computer.
How to install php project with docker?
Use Docker to quickly build a PHP development environment
Recently a colleague came to me and hoped that I would add something to a PHP website I wrote a long time ago. Function, the local development environment built using xampp
was developed at that time, but now my laptop has been updated and there is no development environment at that time. In line with the principle of not installing useless software on the computer, I thought about whether I could use Docker to build a local development environment. Therefore, this article introduces how to quickly build a local PHP
development environment based on Docker for reference by students in need. use.
Directory
- Preliminary preparation
- Arrangement files
- Running effect
- Installation extension
- Reference materials
This article is based on
5.6-fpm-alpine3.8
andngingx
to build a PHP development environment under Mac.
Preliminary preparation
First download the required image file
$ docker pull php:5.6-fpm-alpine3.8 $ docker pull nginx $ docker pull mysql
Users need to go to hub.docker.com, search for PHP and find themselves through tags The version I want to install is because my project has been developed for a long time and cannot support the latest PHP, so I installed version 5.6.
We need to prepare a working directory, such as lnmp
, and prepare the website root directory, Nginx configuration file directory, and Nginx log directory in the working directory.
$ mkdir lnmp $ cd lnmp $ mkdir -p nginx/www nginx/logs nginx/conf
Create a new index.php file in the newly created www directory to check whether the PHP environment is successfully established.
<?php phpinfo(); ?>
Prepare the nginx
configuration file php.conf in the nginx/conf
directory.
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; include fastcgi_params; } }
Arrangement file
Create docker-compose.yml
arrangement file in the working directory.
For a detailed introduction to
docker-compose
, please refer to my previous article Docker-compose usage introduction.
version: "2.1" services: nginx: image: nginx ports: - "80:80" volumes: - ~/Projects/sh-valley/docker-conf/lnmp/nginx/www:/usr/share/nginx/html - ~/Projects/sh-valley/docker-conf/lnmp/nginx/conf:/etc/nginx/conf.d - ~/Projects/sh-valley/docker-conf/lnmp/nginx/logs:/var/log/nginx networks: - lnmp-network php: image: php:5.6-fpm-alpine3.8 volumes: - ~/Projects/sh-valley/docker-conf/lnmp/nginx/www:/www networks: - lnmp-network mysql: image: mysql ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=123456 networks: - lnmp-network networks: lnmp-network:
At this point, we have completed all the preparation work and can start to check the effect immediately.
Running effect
$ docker-compose up -d Creating network "lnmp_php-network" with the default driver Creating lnmp_nginx_1 ... done Creating lnmp_php_1 ... done
You will see the familiar phpinfo
interface immediately.
Installing extensions
Defaultphp
The extensions provided in the image are relatively few, lacking such as mysql, gd2
and other commonly used extensions, so we need to install and enable the extension ourselves.
First enter the php
container and use the php -m
command to check what extensions are available locally.
You can use the docker-php-ext-install
command to install the extension.
$ docker-php-ext-install mysql
After the extension is installed, it can be enabled in php.ini
. We can see from phpinfo
that the default php.ini
is not enabled in the container environment. You can /usr/local/etc/php
##php.ini-development is copied to
php.ini. Enable the extensions you need by modifying the configuration in
php.ini. Below are several extension installation commands for your reference.
- docker-php-ext-source
Create a
/usr/src/phpdirectory in the container
- docker -php-ext-enable
Enable PHP extensions, saving us the process of manually editing
php.ini - docker-php-ext-install
install and Enable PHP extension
##docker-php-ext-configure - is often paired with
docker-php-ext-install
and is used when you need to customize the configuration of the extension Recommended learning: "
The above is the detailed content of How to install php project with docker. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

Four ways to exit Docker container: Use Ctrl D in the container terminal Enter exit command in the container terminal Use docker stop <container_name> Command Use docker kill <container_name> command in the host terminal (force exit)

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

The core benefits of PHP include ease of learning, strong web development support, rich libraries and frameworks, high performance and scalability, cross-platform compatibility, and cost-effectiveness. 1) Easy to learn and use, suitable for beginners; 2) Good integration with web servers and supports multiple databases; 3) Have powerful frameworks such as Laravel; 4) High performance can be achieved through optimization; 5) Support multiple operating systems; 6) Open source to reduce development costs.

How to restart the Docker container: get the container ID (docker ps); stop the container (docker stop <container_id>); start the container (docker start <container_id>); verify that the restart is successful (docker ps). Other methods: Docker Compose (docker-compose restart) or Docker API (see Docker documentation).

Methods for copying files to external hosts in Docker: Use the docker cp command: Execute docker cp [Options] <Container Path> <Host Path>. Using data volumes: Create a directory on the host, and use the -v parameter to mount the directory into the container when creating the container to achieve bidirectional file synchronization.

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

You can query the Docker container name by following the steps: List all containers (docker ps). Filter the container list (using the grep command). Gets the container name (located in the "NAMES" column).
