最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker部署php運行環(huán)境(php-fpm+nginx)

 更新時間:2023年11月16日 11:50:32   作者:erternalKing  
Docker?是一種流行的容器化平臺,可以幫助開發(fā)人員快速創(chuàng)建、部署和管理容器化應用程序,本文將介紹如何使用?Docker?搭建?PHP?開發(fā)環(huán)境服務(wù)器,讓您能夠輕松地開始?PHP?開發(fā)工作,感興趣的可以了解一下

前言

如果使用docker去部署一套php的運行環(huán)境,我們需要構(gòu)建出nginx、php-fpm兩個容器,nginx通過fast_cgi協(xié)議去轉(zhuǎn)發(fā)php-fpm中的端口,從而實現(xiàn)web server的搭建,接下來以php的laravel框架為演示例子。

部署php-fpm

第一步 編寫php-fpm鏡像的Dockerfile:

./Dockerfile

#根據(jù)你自身業(yè)務(wù)需求來選擇官方的php基礎(chǔ)鏡像
FROM php:7.4-fpm-alpine

# 設(shè)置時區(qū)
ENV TZ Asia/Shanghai

# 創(chuàng)建supervisor進程管理器相關(guān)數(shù)據(jù)存在的文件夾
RUN mkdir -p "/var/log/supervisor" && mkdir -p "/var/run"

# 設(shè)置源,提高下載效率
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 安裝系統(tǒng)依賴
RUN apk update && apk --no-cache add \
    autoconf \
    g++ \
    make \
    openssl-dev \
    libzip-dev \
    unzip \
    tzdata \
    supervisor

# 安裝Redis擴展
RUN pecl install redis && docker-php-ext-enable redis

# 安裝PDO MySQL擴展
RUN docker-php-ext-install pdo_mysql && docker-php-ext-enable pdo_mysql

# 安裝opcache擴展
RUN docker-php-ext-install opcache && docker-php-ext-enable opcache

# 安裝Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

#工作目錄
WORKDIR /app

# 定義容器啟動時運行的命令
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]

第二步 配置Crontab定時任務(wù):

./cronJob

* * * * * /usr/local/bin/php /app/www/laravel8/artisan schedule:run >> /var/log/laravel8-crontab-task.log 2>&1

第三步 配置supervisor進程管理器:

./supervisord/supervisord.conf

; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = /etc/supervisor/conf.d/*.conf

supervisord/conf.d/supervisord.conf

[supervisord]
nodaemon=true

[program:php-fpm]
command=/usr/local/sbin/php-fpm -F
autostart=true
autorestart=true
startretries=3
priority=1
stdout_logfile=/var/log/php-fpm.log
redirect_stderr=true

[program:crond]
command=/usr/sbin/crond -f
autostart=true
autorestart=true
stdout_logfile=/var/log/crond.log
redirect_stderr=true
priority=2

第四步 編寫docker-compose.yml:

docker-compose.yml

version: '3.8'

services:
  php7.4fpm:
    build:
      dockerfile: Dockerfile
    image: php7.4fpm
    container_name: php7.4fpm
    restart: always
    volumes:

      # 映射應用程序目錄
      - /Users/king/Code/laravel8:/app/www/laravel8

      # 映射Crontab定時任務(wù)配置
      - ./cronJob:/etc/crontabs/root

      # 映射supervisor配置文件
      - ./supervisord:/etc/supervisor

      # 映射php擴展配置 ps:首次構(gòu)建時需要注釋,否則容器內(nèi)該目錄會為空
      #- ./extensions:/usr/local/etc/php/conf.d


      # 映射fpm配置文件 ps:首次構(gòu)建時需要注釋,否則容器內(nèi)該目錄會為空
      #- ./fpm-conf:/usr/local/etc/php-fpm.d
networks:
  default:
    external: true
    name: frontend

第五步 構(gòu)建鏡像和容器:

  • 拉去基礎(chǔ)鏡像
docker pull php:7.4-fpm-alpine
  • 創(chuàng)建網(wǎng)絡(luò)
docker network create frontend
  • 容器編排
docker-compose up -d --build
  • 查看容器狀態(tài)

  • 同步文件

#同步php擴展配置文件夾,后續(xù)可以直接在宿主機變更相關(guān)參數(shù)配置
docker cp php7.4fpm:/usr/local/etc/php/conf.d ./extensions

#同步fpm配置文件夾,后續(xù)可以直接在宿主機變更相關(guān)參數(shù)配置
docker cp php7.4fpm:/usr/local/etc/php-fpm.d ./fpm-conf
  • 查看當前目錄結(jié)構(gòu)

部署nginx

第一步 編寫Dockerfile:

./Dockerfile

FROM nginx:alpine

# 安裝時區(qū)工具
RUN set -ex \
    && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
    && apk --update add tzdata \
    && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

EXPOSE 80 443

# 定義容器啟動時運行的命令
CMD ["nginx", "-g", "daemon off;"]

第二步 編寫配置文件以及站點vhost:

./nginx.conf

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
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;

    #壓縮配置
    gzip on;
    gzip_comp_level 5;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_proxied any;
    gzip_vary on;
    gzip_types
      application/javascript
      application/x-javascript
      text/javascript
      text/css
      text/xml
      application/xhtml+xml
      application/xml
      application/atom+xml
      application/rdf+xml
      application/rss+xml
      application/geo+json
      application/json
      application/ld+json
      application/manifest+json
      application/x-web-app-manifest+json
      image/svg+xml
      text/x-cross-domain-policy;
    gzip_static on;  
    gzip_disable "MSIE [1-6]\.";

    include /etc/nginx/conf.d/*.conf;
}

./conf.d/default.conf

server {

    listen 80;

    server_name localhost;

    root /app/www/laravel8/public;
    index index.php index.html;

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

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass php7.4fpm:9000;  # PHP-FPM 容器的地址和端口
        fastcgi_index index.php;
    }

    location ~ /\.ht {
        deny all;
    }

    error_log  /var/log/nginx/error-php7.4fpm.log;
    access_log /var/log/nginx/access-php7.4fpm.log;
}

第三步 編寫docker-compose.yml:

./docker-compose.yml

version: '3.8'

services:
  nginx:
    build:
      dockerfile: Dockerfile
    image: nginx
    container_name: nginx
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./conf.d:/etc/nginx/conf.d
      - ./log:/var/log/nginx
    restart: always
    ports:
      - "80:80"
networks:
  default:
    external: true
    name: frontend

第四步 構(gòu)建鏡像和容器:

  • 拉去基礎(chǔ)鏡像
docker pull nginx:alpine
  • 容器編排
docker-compose up -d --build
  •  查看容器狀態(tài)

  • 目錄結(jié)構(gòu)

 驗證

如果以上步驟順利操作,瀏覽器訪問 http://127.0.0.1或http://localhost看響應結(jié)果。

到此這篇關(guān)于Docker部署php運行環(huán)境(php-fpm+nginx)的文章就介紹到這了,更多相關(guān)Docker部署php運行環(huán)境內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker 中快速構(gòu)建 Redis Cluster 集群的詳細過程

    Docker 中快速構(gòu)建 Redis Cluster 集群的詳細過程

    Redis Cluster 集群模式提供了數(shù)據(jù)分區(qū)和高可用性,通過分布式方式存儲和管理數(shù)據(jù),實現(xiàn)更高的擴展性,本指南將演示如何使用 Docker 快速構(gòu)建一個包含 3 個節(jié)點的 Redis Cluster 集群,感興趣的朋友一起看看
    2024-05-05
  • docker網(wǎng)卡的IP地址修改方法總結(jié)

    docker網(wǎng)卡的IP地址修改方法總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于docker網(wǎng)卡的IP地址修改方法,文中通過實例代碼介紹的非常詳細,對大家學習或者使用docker具有一定的參考學習價值,需要的朋友可以參考下
    2023-06-06
  • docker容器單機創(chuàng)建3個節(jié)點的MySQLMGR集群方式

    docker容器單機創(chuàng)建3個節(jié)點的MySQLMGR集群方式

    本文檔詳細介紹了如何在單機上使用Docker創(chuàng)建一個包含三個節(jié)點的MySQL MGR集群,通過一系列步驟,包括安裝Docker、配置MySQL MGR以及啟動多個容器,成功構(gòu)建了一個高可用的MySQL集群環(huán)境
    2026-01-01
  • Docker鏡像管理之docker?pull實戰(zhàn)及常見問題詳解

    Docker鏡像管理之docker?pull實戰(zhàn)及常見問題詳解

    docker pull是我們經(jīng)常用到的一個命令,我們使用一些官方鏡像,如MySql、Nginx等都需要用docker pull下載,這篇文章主要介紹了Docker鏡像管理之docker?pull實戰(zhàn)及常見問題的相關(guān)資料,需要的朋友可以參考下
    2025-09-09
  • 你可能不知道的docker命令奇怪巧

    你可能不知道的docker命令奇怪巧

    這篇文章主要介紹了你可能不知道的docker命令的奇怪巧,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • CentOS?7中安裝Docker和Docker?Compose的完整操作步驟

    CentOS?7中安裝Docker和Docker?Compose的完整操作步驟

    這篇文章主要介紹了在CentOS?7系統(tǒng)上安裝Docker和Docker?Compose的步驟,包括環(huán)境準備、卸載舊版本、安裝Docker、配置鏡像加速以及安裝和驗證Docker?Compose,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-04-04
  • ssh 直接登錄docker容器的操作方法(不用通過宿主機進入)

    ssh 直接登錄docker容器的操作方法(不用通過宿主機進入)

    這篇文章主要介紹了ssh 直接登錄docker容器的操作方法(不用通過宿主機進入),本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Docker部署SpringBoot的兩種方法

    Docker部署SpringBoot的兩種方法

    Docker是一種流行的容器化技術(shù),可以幫助開發(fā)人員更輕松地構(gòu)建、部署和運行應用程序,Spring?Boot是一種快速開發(fā)框架,可以幫助開發(fā)人員更快地構(gòu)建應用程序,本文主要介紹了Docker部署SpringBoot的兩種方法,感興趣的可以了解一下
    2023-10-10
  • excel導出在docker環(huán)境中總是失敗的問題

    excel導出在docker環(huán)境中總是失敗的問題

    這篇文章主要介紹了excel導出在docker環(huán)境中總是失敗的問題及解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,
    2020-09-09
  • docker容器安裝及部署的超詳細入門教程

    docker容器安裝及部署的超詳細入門教程

    Docker可以讓開發(fā)者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化,下面這篇文章主要給大家介紹了關(guān)于docker安裝及部署的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評論

承德县| 北辰区| 沈阳市| 托里县| 古浪县| 嘉义市| 鄄城县| 崇左市| 丹巴县| 华蓥市| 麻阳| 承德县| 临漳县| 崇礼县| 昌平区| 平泉县| 伊吾县| 城市| 富蕴县| 惠来县| 定陶县| 巴林右旗| 乡宁县| 杂多县| 韶关市| 项城市| 高碑店市| 洛扎县| 莱阳市| 吴江市| 平利县| 平潭县| 门头沟区| 民县| 合江县| 平罗县| 绥滨县| 武城县| 巫溪县| 两当县| 沈阳市|