


Pelan konfigurasi persekitaran pembangunan docker berbilang versi Laravel di bawah MacBook
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.
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
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"
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; } }
Rujukan konfigurasi hos hos:
127.0.0.1 sso.example.com 127.0.0.1 app.example.com
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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Buat jadual rujukan untuk merekodkan hubungan cadangan, termasuk rujukan, rujukan, kod cadangan dan masa penggunaan; 2. Tentukan hubungan dan hubungan hasmany dalam model pengguna untuk menguruskan data cadangan; 3. Menjana kod cadangan yang unik semasa mendaftar (boleh dilaksanakan melalui peristiwa model); 4. Menangkap kod cadangan dengan menanyakan parameter semasa pendaftaran, mewujudkan hubungan cadangan selepas pengesahan dan mencegah penyimpanan diri; 5. mencetuskan mekanisme ganjaran apabila pengguna yang disyorkan melengkapkan tingkah laku yang ditentukan (urutan langganan); 6. Menjana pautan cadangan yang boleh dikongsi, dan gunakan URL tandatangan Laravel untuk meningkatkan keselamatan; 7. Statistik cadangan paparan di papan pemuka, seperti jumlah cadangan dan nombor yang ditukar; Adalah perlu untuk memastikan kekangan pangkalan data, sesi atau kuki berterusan,

ChooseafeatureFlagstrategySuchasconfig-berasaskan, didorong oleh pangkalan data, orthird-partytoolslikeFlagsmith.2.setupadatabase-drivensystembycreatingamigrationforafeature_flagstableWithname, didayakan, andrulesfreate.3

Buat projek Laravel baru dan mulakan perkhidmatan; 2. Menjana model, penghijrahan dan pengawal dan jalankan penghijrahan; 3. Tentukan laluan RESTful dalam Laluan/API.PHP; 4. Melaksanakan kaedah tambahan, penghapusan, pengubahsuaian dan pertanyaan dalam postcontroller dan mengembalikan respons JSON; 5. Gunakan postman atau curl untuk menguji fungsi API; 6. Pilihan menambah pengesahan API melalui Sanctum; Akhirnya dapatkan struktur yang jelas, Laravelrestapi yang lengkap dan boleh diperpanjang, sesuai untuk aplikasi praktikal.

Corak repositori adalah corak reka bentuk yang digunakan untuk memusnahkan logik perniagaan dari logik akses data. 1. Ia mentakrifkan kaedah akses data melalui antara muka (kontrak); 2. Operasi khusus dilaksanakan oleh kelas repositori; 3. Pengawal menggunakan antara muka melalui suntikan ketergantungan, dan tidak terus menghubungi sumber data; 4. Kelebihan termasuk kod kemas, kesesuaian yang kuat, penyelenggaraan mudah dan kerjasama pasukan; 5. Berkenaan dengan projek sederhana dan besar, projek kecil boleh menggunakan model secara langsung.

Eloquentorm adalah sistem pemetaan relasi objek terbina dalam Laravel. Ia mengendalikan pangkalan data melalui sintaks PHP dan bukannya SQL asli, menjadikan kod lebih ringkas dan mudah dikekalkan; 1. Setiap jadual data sepadan dengan kelas model, dan setiap rekod wujud sebagai contoh model; 2. Mengamalkan mod rekod aktif, dan contoh model boleh disimpan atau dikemas kini dengan sendirinya; 3. Penyerahan batch sokongan, dan atribut yang boleh diisi $ perlu ditakrifkan dalam model untuk memastikan keselamatan; 4. Memberi sokongan hubungan yang kuat, seperti satu-satu, satu-ke-banyak, banyak-banyak, dan lain-lain, dan anda boleh mengakses data yang berkaitan melalui panggilan kaedah; 5. Pembina pertanyaan bersepadu, di mana, Orderby dan kaedah lain boleh dipanggil dirantai untuk membina pertanyaan; 6. Aksesor sokongan dan pengubahsuaian, yang boleh memformat nombor apabila memperoleh atau menetapkan atribut.

Accessorsandmutatorsinlaravel'SeloquentormallowyoutoFormatormaniipulatemodelattributesWenRetrievingOrseTtingValues.1.useaccessorstocustomizeattribatoretrieval, suchascapitalizingfirst_nameViagetfirstnam

Gunakan FormRequests untuk mengekstrak logik pengesahan bentuk kompleks dari pengawal, meningkatkan kebolehkerjaan kod dan kebolehgunaan semula. 1. Kaedah Penciptaan: Menjana kelas permintaan melalui perintah Artisan Buat: Permintaan; 2. Peraturan Definisi: Tetapkan logik pengesahan medan dalam kaedah () kaedah; 3. Penggunaan Pengawal: Menerima permintaan secara langsung dengan kelas ini sebagai parameter, dan Laravel secara automatik mengesahkan; 4. Penghakiman Kebenaran: Kawalan Kebenaran Pengguna Melalui Kaedah ()) Kaedah; 5. Peraturan Pelarasan Dinamik: Kembalikan Peraturan Pengesahan Berbeza mengikut Kandungan Permintaan.

LaraveleloquentsupportssubqueriesInseLect, dari, di mana, andorderbyclauses, enablingflexibledataretrievalwithoutrawsql; 1.useSelect Sub () toaddcomputedColumnsLikePostCountPererer; 2.UsefromSub () OrclouredRomfrom () totreatSubqueryasedtableForGroupedData; 3.US
