MacBook에서의 Laravel 다중 버전 Docker 개발 환경 구성 계획
우선, 저자는 이 커뮤니티에서 많은 기술적인 영양을 배웠습니다. 이제 PHP 개발 환경 구축에 대한 아이디어에 대한 참고 자료가 되기를 바라면서, 저자의 docker 기반 PHP 개발 환경 구성 계획을 공유하고자 합니다.
프로젝트 배경
라라벨 버전마다 PHP 버전 요구 사항이 다릅니다.
여러 버전의 프로젝트를 동시에 디버깅하는 경우 Docker 환경을 사용하여 개발하세요. 구체적인 시나리오는 다음과 같습니다(예):
인증 시스템은 laravel6을 기반으로 하며 PHP는 버전 7.2를 실행합니다.
애플리케이션 시스템은 laravel9을 기반으로 하며 PHP는 버전 8.1을 실행합니다.
통합 로그인을 위해서는 애플리케이션이 인증 시스템으로 이동해야 합니다. 인증이 통과된 후 임시 티켓 매개변수 코드가 전달되어 애플리케이션으로 다시 돌아갑니다. 애플리케이션은 코드 매개변수를 얻은 후 인증 시스템 RPC 서비스에 사용자 세부 정보를 요청합니다.
디렉터리 구조 참조:
./ ├── 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
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"
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; } }
호스트 구성 참조:
127.0.0.1 sso.example.com 127.0.0.1 app.example.com
참고자료 php-fpm의 도커 이미지 얻기:
저자는 공식 이미지를 기반으로 개발에 필요한 일부 확장을 추가했으며, 빌드된 이미지에는
PHP7.4, PHP8.0, PHP8.1, PHP8.2
가 포함됩니다. MacBook Intel 칩 도커 PHP 이미지 :
hub.docker.com/r/bai615/amd64-php/...
MacBook M1 칩 도커 PHP 이미지 :
hub.docker.com/r/bai615/arm64- php /...
PHP5.3, PHP5.4, PHP5.5, PHP5.6, PHP7.0, PHP7.1, PHP7.2, PHP7.3
을 포함하여 사용 가능한 타사 이전 버전의 PHP
hub.docker.com/r/leleos/php-fpm/ta...
저자의 개발 경험:
docker 개발 환경:
소프트웨어 버전을 마음대로 전환할 수 있습니다(PHP, MySQL). , Nginx 등), 테스트 환경이나 프로덕션 환경과 일치합니다.
홈스테드 개발 환경:
vgrant 기반이 필요하며 vbox 또는 wmware에 의존합니다. 현재는 M1 지원에 충분히 친숙하지 않습니다.
Brew 소프트웨어 관리 기반 개발 환경:
Brew 소프트웨어(PHP, MySQL, Nginx 등)를 설치하고 관리하는 방법. Brew 버전이 업그레이드되면 설치된 소프트웨어에 영향을 줄 수 있는 예측할 수 없는 문제가 발생할 수 있습니다.
1. 기본 종속성은 동기식으로 업그레이드되며 더 낮은 버전의 PHP는 더 이상 지원되지 않습니다(예: PHP5.6 이하는 실행할 수 없음).
2. 소프트웨어의 기본 설치 경로가 변경되었으며, 원래 경로를 사용하는 소프트웨어는 실행할 수 없습니다.
brew 3.x 소프트웨어 기본 설치 경로 /opt/homebrew/bin/
brew 4.x 소프트웨어 기본 설치 경로 /usr/local/bin/
3. PHP, MySQL, Nginx 및 기타 버전은 전환할 만큼 유연하지 않습니다.
위 내용은 MacBook에서의 Laravel 다중 버전 Docker 개발 환경 구성 계획의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Laravel 이메일 전송이 실패 할 때 반환 코드를 얻는 방법. Laravel을 사용하여 응용 프로그램을 개발할 때 종종 확인 코드를 보내야하는 상황이 발생합니다. 그리고 실제로 ...

laravel 일정 작업 실행 비 응답 문제 해결 Laravel의 일정 작업 일정을 사용할 때 많은 개발자 가이 문제에 직면합니다 : 스케줄 : 실행 ...

Laravel의 이메일을 처리하지 않는 방법은 LaRavel을 사용하는 것입니다.

DCAT를 사용할 때 DCATADMIN (LARAVEL-ADMIN)에서 데이터를 추가하려면 사용자 정의의 테이블 기능을 구현하는 방법 ...

Laravel - 덤프 서버 - Laravel 덤프 서버는 Laravel 5.7 버전과 함께 제공됩니다. 이전 버전에는 덤프 서버가 포함되어 있지 않습니다. 덤프 서버는 laravel/laravel 작곡가 파일의 개발 종속성이 됩니다.

Laravel 프레임 워크 및 Laravel 프레임 워크 및 Redis를 사용할 때 Redis 연결을 공유하는 데 영향을 줄 수 있습니다. 개발자는 문제가 발생할 수 있습니다. 구성을 통해 ...

Laravel 다중 테넌트 확장 패키지 패키지 패키지 패키지 패키지 Stancl/Tenancy, ...

Laravel - 액션 URL - Laravel 5.7에는 "호출 가능한 액션 URL"이라는 새로운 기능이 도입되었습니다. 이 기능은 액션 메소드에서 문자열을 허용하는 Laravel 5.6의 기능과 유사합니다. Laravel 5.7에 도입된 새로운 구문의 주요 목적은
