---- 아래 내용은 리눅스 또는 맥OS에서 동작하며 윈도우의 경우 정상동작 하지 않을 수 있다. ----
라라벨 스터디를 하기 위해서는 내 PC에 반드시 PHP를 설치해야 한다.
그리고 동작을 위해서 매번 php로 임시서버를 실행시키는 번거로움도 있고,
DB, Redis, nginx 등 여러 환경을 세팅하기 위해 내 PC에 많은 것들이 설치될 수 있어 관리도 어렵고 성능도 걱정이 된다.
그래서 이 모든 것을 하나도 설치하지 않고(물론 docker를 위해 docker 설치는 필수) 사용하는 환경을 구축할 것이다.
일단 laradock을 설치한다.
설치는 아래 명령으로 간단히 끝난다.(끝난다기 보단 docker-compose 를 위한 환경을 다운로드 받는 것이다.)
git clone https://github.com/laradock/laradock.git
다운로드가 끝나면 laradock 폴더가 생긴다.
docker-compose 명령어는 모두 laradock 폴더에서 실행한다.
실제 사용하게 되는 폴더 구조는
- 현재폴더
- laradock
- 프로젝트 폴더1
- 프로젝트 폴더2
이런식으로 구성되게 된다.
이 부분은 모두 설치 후 확인해 보면 된다.
이제 환경 파일을 설정하면 된다.
laradock 폴더에서 아래 명령을 실행한다.
cp env-example .env
환경 파일(.env)에서 아래 부분을 수정한다.
...
# Choose storage path on your machine. For all storage systems
DATA_PATH_HOST=./data
...
...
# Define the prefix of container names. This is useful if you have multiple projects that use laradock to have seperate containers per project.
COMPOSE_PROJECT_NAME=laradock-study
...
...
NGINX_HOST_HTTP_PORT=80
NGINX_HOST_HTTPS_PORT=443
...
DATA_PATH_HOST 는 이후 database의 데이터가 저장될 장소이다.
수정하지 않게 되면 이후 만드는 모든 laradock 프로젝트의 DB는 같은 DB를 보게 된다.(같은 DB를 보길 원하면 수정하지 않아도 됨)
COMPOSE_PROJECT_NAME 은 docker-compose에서 만들게 될 프로젝트 이름이 되는데,
이 부분이 같은 프로젝트들의 경우 같은 container를 사용하게 되어 여러 프로젝트를 할 경우 변경해주는 것이 좋다.
NGINX_HOST_HTTP(S)_PORT 의 경우 포트가 겹치면서 문제가 발생할 경우 포트를 변경해준다.
그리고 우선 할 일은 laravel 프로젝트를 생성하는 것이다.
처음에는 laravel 프로젝트가 없으므로 workspace부터 실행시킨다.
laradock 폴더에서 실행한다.
docker-compose up -d workspace
그리고 해당 컨테이너로 들어가 laravel 프로젝트를 생성한다.
docker-compose exec workspace bash
이제 확인해 보면 알겠지만 laradock 상위 폴더가 /var/www 을 가리키는 것을 확인할 수 있을 것이다.(물론 수정 가능하지만 이게 가장 나은 것으로 판단 했다.)
라라벨 프로젝트를 생성한다.
composer create-project --prefer-dist laravel/laravel prj1
이렇게 라라벨 프로젝트 준비가 끝났다.
이제 라라벨을 실제로 사용하기 위해 컨테이너를 나온다.(exit 명령 사용)
nginx 설정에서 laravel을 정확히 보기 위해서 ./nginx/sites/laravel.conf.example 파일을 복사한다.
cp ./nginx/sites/laravel.conf.example ./nginx/sites/prj1.conf
vi ./nginx/sites/prj1.conf
아래와 같이 수정한다.(단, prj1.test로 접속할 수 있는 환경을 만들어야 함)
...
server_name prj1.test;
root /var/www/prj1/public;
index index.php index.html index.htm;
...
만일 localhost로 접속할수 밖에 없다면 default 파일을 수정한다.
vi ./nginx/sites/default.conf
아래와 같이 수정함
...
server_name localhost;
root /var/www/prj1/public;
index index.php index.html index.htm;
...
nginx와 mariadb, workspace 컨테이너를 실행시켜 준다.
docker-compose up -d nginx mariadb workspace
이제 브라우저에서 접속하면 된다.
http://localhost or http://localhost:포트번호