php는 node와 달리 서버를 만들 수 없어 nginx를 사용해야 한다.
root /var/www/html/public
: 들어오는 요청에 응답하는데 사용할 수 있는 파일을 찾을 디렉토리이다. server:
image: 'nginx:stable-alpine'
ports:
- '8000:80'
volumes:
- ./src:/var/www/html
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
/var/www/html
은 웹 사이트를 제공하는 웹 서버의 표준적인 폴더를 워킹디렉토리로 정한다. php:
build:
context: ./dockerfiles
dockerfile: php.dockerfile
volumes:
- ./src:/var/www/html:delegated
mysql 는 db
mysql:
image: mysql:5.7
env_file:
- ./env/mysql.env
composer 컨테이너를 통해 라라벨 애플리케이션을 만든다.
composer:
build:
context: ./dockerfiles
dockerfile: composer.dockerfile
volumes:
- ./src:/var/www/html
docker-compose run --rm composer create-project --prefer-dist laravel/laravel .
을 수행하면 라라벨 애플리케이션이 src/ 디렉토리에 설치된다.
composer컨테이너는 다음은 명령을 수행한다.
composer --ignore-platform-reqs create-project --prefer-dist laravel/laravel /var/www/html
생성된 .env 파일 중 DB 연결관련한 환경설정을 변경한다.
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
artisan : laravel 초기 데이터
services:
server:
# image: 'nginx:stable-alpine'
build:
context: .
dockerfile: dockerfiles/nginx.dockerfile
ports:
- '8000:80'
volumes:
- ./src:/var/www/html
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- php
- mysql
php:
build:
context: .
dockerfile: dockerfiles/php.dockerfile
volumes:
- ./src:/var/www/html:delegated
mysql:
image: mysql:5.7
env_file:
- ./env/mysql.env
composer:
build:
context: ./dockerfiles
dockerfile: composer.dockerfile
volumes:
- ./src:/var/www/html
artisan:
build:
context: .
dockerfile: dockerfiles/php.dockerfile
volumes:
- ./src:/var/www/html
entrypoint: ['php', '/var/www/html/artisan']
npm:
image: node:1400
working_dir: /var/www/html
entrypoint: ['npm']
volumes:
- ./src:/var/www/html