Home  >  Article  >  Backend Development  >  How to use Docker to deploy projects in PHP development

How to use Docker to deploy projects in PHP development

WBOY
WBOYOriginal
2023-06-27 14:29:343495browse

Using Docker to deploy projects in PHP development has become an increasingly popular trend. Docker is a popular containerization technology that can package applications into containers, thereby providing developers with a standardized development environment that can seamlessly deploy applications in different operating systems and environments, and achieve Build, deploy, and upgrade applications quickly.

Let us learn more about how to use Docker to deploy projects in PHP development.

Step 1: Install and configure Docker

First make sure Docker is installed on the local system, and the installation method of Docker may be slightly different in different operating systems. After the installation is complete, use the docker version command in the terminal to verify whether the installation is successful.

The core of configuring Docker is to create a Dockerfile file, which is a text file that contains all the instructions for creating a Docker image. In the Dockerfile, we need to define the environment required for PHP development.

Step 2: Write the Dockerfile file

Create a Dockerfile file and place it in the root directory of the project.

In the Dockerfile, we need to include the following content:

# 基础镜像,Golang alpine 3.7版本 
FROM alpine:3.7 

# 添加所有php常用库
RUN apk update 
&& apk add --no-cache 
php7-bcmath 
php7-ctype 
php7-curl php7-dom php7-fileinfo php7-ftp php7-gd php7-iconv php7-intl php7-json php7-ldap php7-mbstring php7-mysqli php7-mysqlnd php7-opcache php7-openssl php7-pcntl  
php7-pdo_mysql php7-pdo_sqlite  php7-phar  php7-posix  php7-session  php7-simplexml  php7-soap  php7-sockets  php7-sqlite3  php7-tokenizer  php7-xml  php7-xmlreader  php7-xmlwriter php7-zip php7-zlib 

# 修改时区
RUN apk add --no-cache tzdata 
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

# 在容器中创建目录并设置权限
WORKDIR /var/www/ 
RUN mkdir -p var/www/html 
&& chown -R nginx:nginx /var/www/html 

# 开放80端口
EXPOSE 80 

# 开始运行PHP-FPM
CMD ["php-fpm7", "-F"] 

The above is the content of a simple Dockerfile file, which mainly includes the following three aspects:

  1. Basic image: We chose alpine version 3.7, a small distribution that only contains the most necessary components. It reduces the size of the image and makes container startup faster.
  2. Add extensions required by PHP: As shown above, we have added many common extensions for PHP.
  3. Set the running mode of the container: We use PHP's FPM process as the default process of the container, so that PHP-FPM will automatically run when the container starts.

Step 3: Generate Docker image

Use the following command to build a PHP-FPM image:

docker build . -t php-fpm7:latest 

This command will automatically build from the current directory Mirror and set the label to php-fpm7:latest.

Step 4: Write the docker-compose.yml file

Next, we need to prepare the docker-compose.yml file, which will define how our application runs.

version: '3.1' 

services: 

# 定义Nginx服务 
nginx: 
image: nginx:1.13-alpine 
ports: 
- '8000:80' 
volumes: 
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro 
- ./nginx/conf.d:/etc/nginx/conf.d:ro 
- ./code:/var/www/html:ro 
depends_on: 
- php 

# PHP-FPM服务 
php: 
image: php-fpm7:latest 
volumes: 
- ./code:/var/www/html:rw 
- ./php/custom.ini:/usr/local/etc/php/conf.d/custom.ini:ro 

# MySQL服务 
mysql: 
image: mysql:5.7 
ports: 
- '3306:3306' 
env_file: 
- ./mysql/.env 
volumes: 
- ./mysql/data:/var/lib/mysql 
- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro

As shown above, we have defined three services: Nginx, PHP and MySQL. The port, configuration, dependencies, mounted volumes and other settings can be modified according to your actual needs.

Step 5: Start the application

Finally, we start the application through the following command:

docker-compose up 

This command will read the docker-compose.yml file and start all services. After the execution is successful, you can visit http://localhost:8000 through the browser to check whether the deployment is successful.

Summary:

The above is how to use Docker to deploy projects in PHP development. Compared with traditional deployment methods, Docker deployment can help us reduce development and deployment costs, improve application scalability and stability, and save developers time. I hope this article can help everyone better learn and apply Docker technology.

The above is the detailed content of How to use Docker to deploy projects in PHP development. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn