Rumah > rangka kerja php > Laravel > Pelan konfigurasi persekitaran pembangunan docker berbilang versi Laravel di bawah MacBook

Pelan konfigurasi persekitaran pembangunan docker berbilang versi Laravel di bawah MacBook

藏色散人
Lepaskan: 2023-04-06 14:52:17
ke hadapan
1396 orang telah melayarinya

Pertama sekali, terima kasih kepada masyarakat Penulis telah mempelajari banyak ilmu pemakanan teknikal daripada komuniti ini. Sekarang saya ingin berkongsi pelan konfigurasi persekitaran pembangunan PHP pengarang berdasarkan docker, dengan harapan dapat memberikan beberapa rujukan untuk idea dalam membina persekitaran pembangunan PHP.

Latar belakang projek

Versi laravel yang berbeza mempunyai keperluan versi PHP yang berbeza.
Jika anda menghadapi penyahpepijatan berbilang versi projek pada masa yang sama, dan gunakan persekitaran docker untuk pembangunan. Senario khusus adalah seperti berikut (contoh):
Sistem pengesahan adalah berdasarkan laravel6 dan PHP menjalankan versi 7.2.
Sistem aplikasi adalah berdasarkan laravel9 dan PHP menjalankan versi 8.1.
Aplikasi perlu melompat ke sistem pengesahan untuk log masuk bersatu. Selepas pengesahan diluluskan, kod parameter tiket sementara dibawa untuk melompat kembali ke aplikasi. Selepas aplikasi memperoleh parameter kod, ia meminta perkhidmatan RPC sistem pengesahan untuk mendapatkan butiran pengguna.

Pelan konfigurasi persekitaran pembangunan docker berbilang versi Laravel di bawah MacBook

Rujukan struktur direktori:

./
├── docker-compose.yaml
├── mariadb-data
├── mariadb-log
├── nginx-config                         # nginx 配置
│   ├── conf.d
│   │   ├── default.conf
│   │   ├── sso.example.com.conf
│   │   ├── app.example.com.conf
│   ├── fastcgi.conf
│   ├── fastcgi_params
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types
│   ├── nginx-bak.conf
│   ├── nginx.conf
│   ├── scgi_params
│   ├── uwsgi_params
│   └── win-utf
├── nginx-html                           # laravel 项目代码目录
│   ├── sso.example.com
│   ├── app.example.com
├── nginx-log
│   ├── access.log
│   ├── error.log
│   ├── sso.example.com-error.log
│   ├── app.example.com-error.log
├── php-config-7.2
│   ├── conf.d
│   ├── php.ini
│   ├── php.ini-development
│   └── php.ini-production
├── php-config-8.1
│   ├── conf.d
│   ├── php.ini
│   ├── php.ini-development
│   └── php.ini-production
└── php-log
Salin selepas log masuk

rujukan kandungan docker-compose.json:

version: "3" 

services:
  mysql:
    hostname: mysql
    image: mariadb:10.5.10
    container_name: lara-mariadb-10.5
    ports:
      - "3308:3306" 
    volumes:
      - ./mariadb-log:/var/log/mysql
      - ./mariadb-data:/var/lib/mysql
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_USER=username
      - MYSQL_PASSWORD=password
    networks:
      lara-net:
        ipv4_address: 172.23.0.2

  php72:
    hostname: php-fpm-72
    image: leleos/php-fpm:7.2
    container_name: lara-php-fpm-7.2
    ports:
      - "9001:9000" 
    links:
      - mysql:lara-mariadb-10.5
      - redis:lara-redis-6
    extra_hosts:
      - "sso.example.com:172.23.0.10" 
      - "app.example.com:172.23.0.10" 
    volumes:
      - ./nginx-html:/usr/share/nginx/html:rw
      - ./php-log:/var/log/phplog
      - ./php-config-7.2:/usr/local/etc/php
    environment:
      - TZ=Asia/Shanghai
    networks:
      lara-net:
        ipv4_address: 172.23.0.4

  php81:
    hostname: php-fpm-81
    image: bai615/amd64-php:8.1.17-fpm
    container_name: lara-php-fpm-8.1
    ports:
      - "9002:9000" 
    links:
      - mysql:lara-mariadb-10.5
      - redis:lara-redis-6
    extra_hosts:
      - "sso.example.com:172.23.0.10" 
      - "app.example.com:172.23.0.10" 
    volumes:
      - ./nginx-html:/usr/share/nginx/html:rw
      - ./php-log:/var/log/phplog
      - ./php-config-8.1:/usr/local/etc/php
    environment:
      - TZ=Asia/Shanghai
    networks:
      lara-net:
        ipv4_address: 172.23.0.5

  redis:
    hostname: redis
    container_name: lara-redis-6
    image: redis:6.2.6
    ports:
      - "6479:6379" 
    environment:
      - TZ=Asia/Shanghai
    networks:
      lara-net:
        ipv4_address: 172.23.0.8

  nginx:
    hostname: nginx
    container_name: lara-nginx-1.22.0
    image: nginx:1.22.0
    ports:
      - "81:81" 
      - "443:443" 
    links:
      - "php72:lara-php-fpm-7.2" 
      - "php81:lara-php-fpm-8.1" 
      - "mysql:lara-mariadb-10.5" 
      - "mongo:lara-mongo-5" 
      - "redis:lara-redis-6" 
    extra_hosts:
      - "sso.example.com:127.0.0.1" 
      - "app.example.com:127.0.0.1" 
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./nginx-config:/etc/nginx
      - ./nginx-log:/var/log/nginx
      - ./nginx-html:/usr/share/nginx/html
    networks:
      lara-net:
        ipv4_address: 172.23.0.10

  mongo:
    hostname: mongo
    container_name: lara-mongo-5
    image: mongo:5.0.12
    ports:
      - "27018:27017" 
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - mongo-data:/data/db
    networks:
      lara-net:
        ipv4_address: 172.23.0.9

volumes:
  mongo-data:

networks:
  lara-net:
    ipam:
      config:
        - subnet: "172.23.0.0/24"
Salin selepas log masuk

rujukan konfigurasi mesin maya nginx:

server {
    listen 80;
    server_name app.example.com;
    root "/usr/share/nginx/html/app.example.com/public";

    index index.html index.htm index.php;

    charset utf-8;

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

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/sso.example.com-error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass  php81:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
    }

    location ~ /\.ht {
        deny all;
    }
}
Salin selepas log masuk

Rujukan konfigurasi hos hos:

127.0.0.1 sso.example.com
127.0.0.1 app.example.com
Salin selepas log masuk

Imej Docker php-fpm untuk rujukan:

Pengarang menambah beberapa sambungan yang diperlukan untuk pembangunan berdasarkan imej rasmi, dan kemudian imej terbina
mengandungi PHP7.4, PHP8.0, PHP8.1, PHP8.2

Imej PHP docker cip Intel MacBook:
hub.docker.com/r/bai615/amd64-php/...

Imej PHP docker cip M1 MacBook:
hub.docker.com/r/bai615/arm64-php/...

Versi lama PHP pihak ketiga yang boleh digunakan
Mengandungi PHP5.3, PHP5.4, PHP5.5, PHP5.6, PHP7.0, PHP7.1, PHP7.2, PHP7.3
hub.docker.com/r/leleos/ php-fpm/ta...

Pengalaman pembangunan pengarang:

persekitaran pembangunan docker:

Anda boleh menukar versi perisian (PHP, MySQL, Nginx, dll.) sesuka hati untuk memastikan ia konsisten dengan persekitaran ujian atau persekitaran pengeluaran.

persekitaran pembangunan homestead:

Perlu berdasarkan vgrant, bergantung pada vbox atau wmware, pada masa ini tidak cukup mesra untuk sokongan M1.

Persekitaran pembangunan berdasarkan pengurusan perisian brew:

Brew cara untuk memasang dan mengurus perisian (PHP, MySQL, Nginx, dll.). Apabila versi brew dinaik taraf, masalah yang tidak dapat diramalkan mungkin berlaku yang boleh menjejaskan perisian yang dipasang. Seperti berikut:
1. Kebergantungan asas dinaik taraf secara serentak dan versi PHP yang lebih rendah tidak lagi disokong (contohnya, PHP5.6 dan ke bawah tidak boleh dijalankan).
2. Laluan pemasangan lalai perisian telah ditukar dan perisian yang bergantung pada laluan asal tidak boleh dijalankan.
Laluan pemasangan lalai perisian brew 3.x ialah /opt/homebrew/bin/
Laluan pemasangan lalai perisian brew 4.x ialah /usr/local/bin/
3 , Nginx dan versi lain tidak ditukar dengan cukup fleksibel.

Atas ialah kandungan terperinci Pelan konfigurasi persekitaran pembangunan docker berbilang versi Laravel di bawah MacBook. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan