Docker Compose를 사용하여 구축된 기본 LAMP 스택 환경입니다. 이는 다음으로 구성됩니다:
현재로서는 다양한 PHP 버전이 있습니다. 필요에 따라 적절한 PHP 버전을 사용하십시오.
docker compose up -d
실행합니다. git clone https://github.com/sprintcube/docker-compose-lamp.git
cd docker-compose-lamp/
cp sample.env .env
// modify sample.env as needed
docker compose up -d
// visit localhost
이제 LAMP 스택이 준비되었습니다!! http://localhost
통해 접속할 수 있습니다.
이 Docker Stack은 프로덕션 용도가 아닌 로컬 개발용으로 빌드되었습니다.
이 패키지에는 기본 구성 옵션이 함께 제공됩니다. 루트 디렉터리에 .env
파일을 생성하여 수정할 수 있습니다. 쉽게 수행하려면 sample.env
파일에서 콘텐츠를 복사하고 필요에 따라 환경 변수 값을 업데이트하면 됩니다.
다음과 같은 구성 변수를 사용할 수 있으며 사용자 고유의 .env
파일에 덮어써서 사용자 정의할 수 있습니다.
PHPVERSION 사용할 PHP 버전을 지정하는 데 사용됩니다. 기본값은 항상 최신 PHP 버전입니다.
PHP_INI 요구 사항을 충족하도록 사용자 정의 php.ini
수정을 정의합니다.
DOCUMENT_ROOT
Apache 서버의 문서 루트입니다. 기본값은 ./www
입니다. 모든 사이트가 여기에 이동되며 자동으로 동기화됩니다.
APACHE_DOCUMENT_ROOT
Apache 구성 파일 값입니다. 기본값은 /var/www/html입니다.
VHOSTS_DIR
가상호스트용입니다. 이에 대한 기본값은 ./config/vhosts
입니다. 여기에 가상 호스트 conf 파일을 배치할 수 있습니다.
각 가상 호스트에 대해 시스템의
hosts
파일에 항목을 추가했는지 확인하십시오.
APACHE_LOG_DIR
이는 Apache 로그를 저장하는 데 사용됩니다. 이에 대한 기본값은 ./logs/apache2
입니다.
Apple Silicon 사용자의 경우: Mariadb를 데이터베이스로 선택하세요. Oracle은 ARM 아키텍처용 SQL 컨테이너를 구축하지 않습니다.
데이터 베이스
사용하려는 MySQL 또는 MariaDB 버전을 정의하세요.
MYSQL_INITDB_DIR
컨테이너가 처음 시작되면 이 디렉터리에 있는 확장자가 .sh
, .sql
, .sql.gz
및 .sql.xz
인 파일이 알파벳 순서로 실행됩니다. 파일 실행 권한이 없는 .sh
파일은 실행되지 않고 소스로 제공됩니다. 기본값은 ./config/initdb
입니다.
MYSQL_DATA_DIR
이것은 MySQL 데이터 디렉터리입니다. 이에 대한 기본값은 ./data/mysql
입니다. 모든 MySQL 데이터 파일은 여기에 저장됩니다.
MYSQL_LOG_DIR
이는 Apache 로그를 저장하는 데 사용됩니다. 이에 대한 기본값은 ./logs/mysql
입니다.
Apache는 포트 80에서 실행되도록 구성되어 있으므로 http://localhost
통해 액세스할 수 있습니다.
기본적으로 다음 모듈이 활성화되어 있습니다.
더 많은 모듈을 활성화하려면
./bin/phpX/Dockerfile
업데이트하세요. PR을 생성할 수도 있으며 일반적인 목적에 적합하다고 판단되면 병합하겠습니다.docker compose build
실행하여 docker 이미지를 다시 빌드하고 docker 컨테이너를 다시 시작해야 합니다.
docker compose exec
명령을 사용하여 웹 서버에 연결하여 다양한 작업을 수행할 수 있습니다. SSH를 통해 컨테이너에 로그인하려면 아래 명령을 사용하십시오.
docker compose exec webserver bash
설치된 PHP 버전은 .env
파일에 따라 다릅니다.
기본적으로 다음 확장이 설치됩니다. PHP 버전 <7.xx에서는 다를 수 있음
더 많은 확장 기능을 설치하려면
./bin/webserver/Dockerfile
업데이트하세요. PR을 생성할 수도 있으며 일반적인 목적에 적합하다고 판단되면 병합하겠습니다.docker compose build
실행하여 docker 이미지를 다시 빌드하고 docker 컨테이너를 다시 시작해야 합니다.
phpMyAdmin은 포트 8080에서 실행되도록 구성되어 있습니다. 다음 기본 자격 증명을 사용하십시오.
http://localhost:8080/
사용자 이름: 루트
비밀번호 : 호랑이
Xdebug는 기본적으로 설치되며 버전은 ".env"
파일에서 선택한 PHP 버전에 따라 다릅니다.
Xdebug 버전:
PHP <= 7.3: Xdebug 2.XX
PHP >= 7.4: Xdebug 3.XX
Xdebug를 사용하려면 선택한 PHP 버전에 따라 ./config/php/php.ini
파일에서 설정을 활성화해야 합니다.
예:
# Xdebug 2
#xdebug.remote_enable=1
#xdebug.remote_autostart=1
#xdebug.remote_connect_back=1
#xdebug.remote_host = host.docker.internal
#xdebug.remote_port=9000
# Xdebug 3
#xdebug.mode=debug
#xdebug.start_with_request=yes
#xdebug.client_host=host.docker.internal
#xdebug.client_port=9003
#xdebug.idekey=VSCODE
Xdebug VS Code: Xdebug 확장 "PHP 디버그"를 설치해야 합니다. 설치 후 디버그로 이동하여 IDE가 제대로 수신하고 작동할 수 있도록 실행 파일을 만듭니다.
예:
매우 중요: pathMappings
VS Code에서 폴더를 연 방법에 따라 달라집니다. 각 폴더에는 .vscode/launch.json
에서 볼 수 있는 고유한 구성 실행이 있습니다.
{
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
// "port": 9000, // Xdebug 2
"port" : 9003 , // Xdebug 3
"pathMappings" : {
// "/var/www/html": "${workspaceFolder } /www" // if you have opened VSCODE in root folder
"/var/www/html" : " ${workspaceFolder} " // if you have opened VSCODE in ./www folder
}
}
]
}
이제 중단점을 만들고 디버그를 실행합니다.
팁! 이러한 구성 후에는 컨테이너를 다시 시작해야 할 수도 있습니다.
Redis와 함께 제공됩니다. 기본 포트 6379
에서 실행됩니다.
https
도메인에 대한 지원은 기본 제공되지만 기본적으로 비활성화되어 있습니다. SSL을 활성화하고 구성할 수 있는 세 가지 방법이 있습니다. localhost
의 https
가장 쉽습니다. 프로덕션 환경에 최대한 가깝게 테스트 환경을 다시 만들려는 경우 추가 구성을 통해 모든 도메인 이름을 지원할 수 있습니다.
주의 사항: https
사용하려는 모든 비-localhost 도메인 이름에 대해 컴퓨터의 호스트 파일을 수정하고 도메인 이름을 127.0.0.1
로 지정해야 합니다. 이를 수행하지 못하면 SSL이 작동하지 않으며 해당 도메인 이름을 로컬로 방문하려고 할 때마다 인터넷으로 라우팅됩니다.
localhost
(https://localhost)에서 https
활성화하려면 다음을 수행해야 합니다.
localhost
에 대한 SSL 인증서를 만듭니다.mkcert
사용하면 터미널에서 mkcert localhost 127.0.0.1 ::1
실행합니다.cert.pem
및 cert-key.pem
으로 바꿉니다.config/ssl
디렉터리에 배치하여 docker 설정으로 이동하세요.config/vhosts/default.conf
에서 443
vhost의 주석 처리를 제거하세요. 완료. 이제 LAMP 컨테이너를 켤 때마다 https
localhost
에서 작동합니다.
로컬 테스트에 일반 도메인 이름을 사용하고 https
지원이 필요한 경우 가장 간단한 솔루션은 모든 도메인 이름을 포함하는 SSL 인증서입니다.
mkcert
사용하여 터미널에서 mkcert example.com "*.example.org" myapp.dev localhost 127.0.0.1 ::1
실행합니다. 여기서 모든 도메인 이름과 IP 주소를 지원하려는 이름으로 바꿉니다.cert.pem
및 cert-key.pem
으로 바꿉니다.config/ssl
디렉터리에 배치하여 docker 설정으로 이동하세요.config/vhosts/default.conf
에서 443
vhost의 주석 처리를 제거하세요. 완료. 모든 도메인 이름을 단일 인증서로 결합했으므로 vhost 파일은 추가로 수정할 필요 없이 설정을 지원합니다. 그러나 원하는 경우 도메인별 규칙을 추가할 수 있습니다. 이제 LAMP 컨테이너 https
를 켤 때마다 지정한 모든 도메인에서 작동합니다.
로컬 테스트 환경이 프로덕션과 정확히 일치하고 https
지원이 필요한 경우 지원하려는 모든 도메인에 대해 SSL 인증서를 만들 수 있습니다.
mkcert
사용하여 터미널에서 mkcert [your-domain-name(s)-here]
실행하여 대괄호 부분을 도메인 이름으로 바꿉니다.[name]-cert.pem
및 [name]-cert-key.pem
과 같은 고유한 이름으로 바꾸고 대괄호 부분을 고유한 이름으로 바꿉니다.config/ssl
디렉터리에 배치하여 docker 설정으로 이동하세요.config/vhosts/default.conf
)의 443
예제를 사용하여 도메인 이름 및 인증서 파일 이름과 일치하는 새 규칙을 만듭니다. 완료. LAMP 컨테이너는 시작 시 config/ssl
의 모든 SSL 인증서를 자동으로 가져옵니다. vhosts 파일을 올바르게 구성하고 SSL 인증서를 config/ssl
에 배치하는 한 LAMP 컨테이너 https
켤 때마다 지정된 도메인에서 작동합니다.
끌어오기 요청을 생성하거나 사람들의 문제를 돕고 싶다면 기꺼이 도와드리겠습니다. PR을 생성하려는 경우 이 스택은 프로덕션 용도로 구축되지 않았으며 변경 사항은 일반적인 목적에 적합해야 하며 과도하게 전문화되어서는 안 된다는 점을 기억하십시오.
각 PHP 버전의 여러 분기에서 하나의 중앙 집중식 마스터 분기로 프로젝트 구조를 단순화했습니다. 마스터 브랜치에 대한 PR을 생성하십시오.
감사합니다!
우리는 개발자가 창의적인 애플리케이션을 신속하게 만들 수 있도록 지원하고 싶습니다. 따라서 우리는 다양한 프레임워크와 PHP 버전에 대한 로컬 개발 환경을 쉽게 설정할 수 있도록 제공하고 있습니다. 프로덕션에서는 최소한 다음 항목을 수정해야 합니다.