首頁 >後端開發 >php教程 >Docker Compose、Nginx和MariaDB的開箱即用解決方案:快速建造PHP環境

Docker Compose、Nginx和MariaDB的開箱即用解決方案:快速建造PHP環境

WBOY
WBOY原創
2023-10-12 12:46:051488瀏覽

Docker Compose、Nginx和MariaDB的开箱即用解决方案:快速搭建PHP环境

Docker Compose、Nginx和MariaDB的開箱即用解決方案:快速建立PHP環境

概述:

在開發和部署PHP應用程序時,搭建一個可靠且易於管理的環境是至關重要的。 Docker Compose、Nginx和MariaDB可以提供一個快速建造PHP環境的解決方案。本文將介紹如何使用Docker Compose來設定和運行容器,使用Nginx作為Web伺服器,使用MariaDB作為資料庫,快速建構PHP環境。

一、安裝Docker和Docker Compose:

首先,我們需要在本機上安裝Docker和Docker Compose。可以在Docker官方網站上找到適用於不同作業系統的安裝指南。安裝完成後,請驗證安裝是否成功,可以在終端機或命令提示字元中輸入以下命令:

docker --version
docker-compose --version

如果能夠正確顯示版本號,則表示Docker和Docker Compose已成功安裝。

二、建立Docker Compose文件:

接下來,我們需要建立一個名為docker-compose.yml的文件,並在其中定義我們的服務和容器配置。

version: '3'
services:
  nginx:
    build:
      context: .
      dockerfile: nginx.dockerfile
    ports:
      - 80:80
    depends_on:
      - php
  php:
    build:
      context: .
      dockerfile: php.dockerfile
    volumes:
      - ./src:/var/www/html
  mariadb:
    image: mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=secret

解釋:

  • nginx服務:使用build指令建立一個基於Nginx的容器,將本機的80埠對應到容器的80埠,依賴php服務。
  • php服務:使用build指令建立一個包含必要PHP擴充功能的容器,將本機的./src目錄掛載到容器的/var/www/html目錄,實現程式碼的同步更新。
  • mariadb服務:使用預設的MariaDB Docker映像,設定ROOT密碼為secret。

三、建立Dockerfile和設定檔:

接下來,我們需要建立Dockerfile和設定文件,以便在建置映像時提供必要的配置和依賴。

  1. nginx.dockerfile:
FROM nginx

COPY nginx.conf /etc/nginx/nginx.conf
COPY default.conf /etc/nginx/conf.d/default.conf

解釋:從官方的Nginx映像建立一個新的映像,然後將本地的nginx.conf和default.conf檔案複製到容器的相應位置。

  1. php.dockerfile:
FROM php:7.4-fpm

RUN apt-get update && apt-get install -y 
    zlib1g-dev 
    libzip-dev 
    && docker-php-ext-install zip pdo_mysql

COPY php.ini /usr/local/etc/php/conf.d/custom.ini

解釋:從官方的PHP映像建立新的映像,然後使用apt-get命令安裝必要的依賴,並透過docker -php-ext-install指令安裝zip和pdo_mysql擴充。最後將本機的php.ini檔案複製到容器中。

  1. nginx.conf:
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        root   /var/www/html;
        index  index.php index.html;

        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ .php$ {
            fastcgi_pass   php:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

解釋:這是Nginx的設定檔。配置了預設的日誌路徑、事件設定、http設定和一個基本的server區塊,用於處理請求,並將PHP處理交給php容器。

  1. default.conf:
server {
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

解釋:這是Nginx的預設設定檔。與nginx.conf檔案中的server區塊設定相同。

四、開始建置和運行容器:

在設定完所有設定檔之後,我們可以開始建置和運行容器了。在終端機或命令提示字元中,進入docker-compose.yml檔案所在的目錄,然後執行以下命令:

docker-compose up --build

這條指令將啟動建置映像和執行容器的程序。一旦完成,你將會看到容器正在運行,並且可以透過http://localhost存取PHP應用程式。

如果需要在背景執行容器,可以使用下列指令:

docker-compose up -d --build

這條指令將以守護程式模式執行容器。

總結:

透過Docker Compose、Nginx和MariaDB的開箱即用解決方案,我們可以快速建置和管理PHP環境。 Docker的可移植性和容器化的優勢,使得開發和部署PHP應用程式變得更加簡單和可靠。希望本文對你有所幫助,有關程式碼範例的更多細節,請參閱本文所提到的設定檔。

以上是Docker Compose、Nginx和MariaDB的開箱即用解決方案:快速建造PHP環境的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn