Docker Compose로 Laravel 개발 환경을 구축
7929 단어 PHP환경 구축라라벨docker-compose도커
Docker Compose로 Laravel 개발 환경 구축
그렇지만, 문득 생각했다,,,, Laravel의 프로젝트명을 바꾸고 싶다. . .
지금은, Nginx의 conf에 베타 쓰기이므로, .env로부터 설정하고 싶다-라고 일로, 해 보았다.
다음에, 여러가지 버전 올리자!
기계 사양
Docker 환경
PHP(PHP-FPM) 7.1.x → PHP(PHP-FPM) 7.4.x
MySQL 5.7.x → MySQL 8.x
Composer 최신판 → Composer 2.x
Laravel 5.6 → Laravel 8.x
할 일
보충
각 환경을 오거나 하기 때문에 아래와 같이 기재합니다.
[Mac]$ MacのターミナルでMac内の作業
[PHP]$ MacのターミナルからPHPコンテナに接続して作業
.env 파일 만들기
환경별로 .env를 만들고 싶으므로 .env.example을 만듭니다.
내용은 하기.
# APP名
APP_NAME=laravel
# XDebugポート
XDEBUG_PORT=9000
# DB
DATABASE_NAME=hoge
DATABASE_USER=fuga
DATABASE_PASSWORD=docker#DOCKER1234
DATABASE_ROOT_PASSWORD=docker#DOCKER1234
IDE에서 중단 점을 멈추기위한 준비
IDE에서 브레이크 포인트 멈추지 않고 빠졌기 때문에, 제대로 써 둔다.
브레이크 포인트를 정지시키기 위해서는, 이하의 포트 설정이 영향을 준다.
php/xdebug.inixdebug.remote_port = 9001
docker-compose.ymlphp:
〜 略 〜
- '9000:9001'
[Mac]$ MacのターミナルでMac内の作業
[PHP]$ MacのターミナルからPHPコンテナに接続して作業
환경별로 .env를 만들고 싶으므로 .env.example을 만듭니다.
내용은 하기.
# APP名
APP_NAME=laravel
# XDebugポート
XDEBUG_PORT=9000
# DB
DATABASE_NAME=hoge
DATABASE_USER=fuga
DATABASE_PASSWORD=docker#DOCKER1234
DATABASE_ROOT_PASSWORD=docker#DOCKER1234
IDE에서 중단 점을 멈추기위한 준비
IDE에서 브레이크 포인트 멈추지 않고 빠졌기 때문에, 제대로 써 둔다.
브레이크 포인트를 정지시키기 위해서는, 이하의 포트 설정이 영향을 준다.
php/xdebug.inixdebug.remote_port = 9001
docker-compose.ymlphp:
〜 略 〜
- '9000:9001'
xdebug.remote_port = 9001
php:
〜 略 〜
- '9000:9001'
※참고
참고 PHP docker xdebug
.gitignore 편집
.env
docker-compose.yml 편집
version: '3'
volumes:
phpsocket:
services:
nginx:
〜 略 〜
volumes:
- ./src:/home/docker
- phpsocket:/var/run
depends_on:
- php
php:
〜 略 〜
- '9000:9000'
volumes:
- ./src:/home/docker
- phpsocket:/var/run
〜 略 〜
db:
image: mysql:5.7
〜 略 〜
MYSQL_DATABASE: hoge
MYSQL_USER: fuga
MYSQL_PASSWORD: docker#DOCKER1234
MYSQL_ROOT_PASSWORD: docker#DOCKER1234
〜 略 〜
환경 파일을 각 컨테이너에서 참조하고 싶기 때문에, 아래와 같이 변경.
version: '3.8'
volumes:
phpsocket:
services:
nginx:
〜 略 〜
volumes:
- ./nginx/templates:/etc/nginx/templates
- ./src:/home/docker
- phpsocket:/var/run
depends_on:
- php
environment:
- APP_NAME=${APP_NAME}
php:
〜 略 〜
- '${XDEBUG_PORT}:9001'
volumes:
- ./src:/home/docker
- phpsocket:/var/run
〜 略 〜
db:
image: mysql:8
〜 略 〜
MYSQL_DATABASE: ${DATABASE_NAME}
MYSQL_USER: ${DATABASE_USER}
MYSQL_PASSWORD: ${DATABASE_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DATABASE_ROOT_PASSWORD}
〜 略 〜
Nginx conf 편집
・・・
server_name laravel.local;
・・・
location / {
root /home/docker/laravel/public;
・・・
}
・・・
location ~ \.php$ {
root /home/docker/laravel/public;
・・・
}
위에 환경 변수를 포함하도록 수정.
・・・
server_name ${APP_NAME}.local;
・・・
location / {
root /home/docker/${APP_NAME}/public;
・・・
}
・・・
location ~ \.php$ {
root /home/docker/${APP_NAME}/public;
・・・
}
다만, 문서 루트의 환경 변수 임베딩이, 아무래도 에러가 되어 무리였다.
문서 루트를 위치 밖으로 내보내면 환경 변수를 포함할 수 있습니다.
・・・
server_name ${APP_NAME}.local;
・・・
root /home/docker/${APP_NAME}/public;
location / {
・・・
}
・・・
location ~ \.php$ {
・・・
}
후술 (default.conf의 치환)로 파일명을, conf.d/default.conf → templates/default.conf.template에 리네임.
default.conf 바꾸기
# 設定の置換
COPY conf.d/default.conf /etc/nginx/conf.d/default.conf
docker-compose.yml의 volumes로 해결한다.
services:
nginx:
〜 略 〜
volumes:
- ./nginx/templates:/etc/nginx/templates
그래서 Dockerfile 내에서 COPY는 더 이상 필요하지 않습니다.
Composer2.x를 설치하는 수정
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
latest로 하고 있었기 때문에 최신판이 들어 있다고 생각했는데, 왠지 1.x 이었기 때문에 2.x 로 고정.
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
XDebug 버전 고정
RUN pecl install xdebug
이 상태에서 Xdebug 3.x가 설치됩니다.
Xdebug 2.x 와 Xdebug 3.x 는, 설정 파일의 기술이 다르고, 지금까지의 설정이라고 움직이지 않는다. (빠졌어)
Xdebug 2.x에 고정. (3.x의 설정은, 또 이번)
RUN pecl install xdebug-2.9.8
Laravel 준비
[Mac]$ docker-compose exec --user 1000 php bash
[PHP]$ rm -fdR laravel
[PHP]$ composer create-project --prefer-dist laravel/laravel laravel "8.*"
[PHP]$ cd laravel
[PHP]$ composer require --dev barryvdh/laravel-ide-helper
[PHP]$ composer require --dev squizlabs/php_codesniffer
[PHP]$ mkdir bin
[PHP]$ vi bin/clear-laravel.sh
---
#!/bin/bash
php artisan view:clear
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache
composer dump-autoload
php artisan ide-helper:generate
php artisan ide-helper:models -N
php artisan ide-helper:meta
find . -name '._.DS_Store' -type f -ls -delete
---
:wq
[PHP]$ vi .env.example
---
:%s/DB_HOST=127.0.0.1/DB_HOST=mysql/g
:%s/DB_DATABASE=laravel/DB_DATABASE=hoge/g
:%s/DB_USERNAME=root/DB_USERNAME=fuga/g
:%s/DB_PASSWORD=/DB_PASSWORD="docker#DOCKER1234"/g
---
:wq
완성! !
htps : // 기주 b. 코 m/보 b타보/도 c케 r3
※참고
docker의 nginx.conf에 환경 변수를 적용하는 방법
사용법
[Mac]$ cd <任意のディレクトリ>
[Mac]$ git clone https://github.com/bobtabo/docker3.git docker
[Mac]$ cd docker
[Mac]$ cp -p .env.example .env
[Mac]$ docker-compose up -d
・・・
Creating mysql ... done
Creating php ... done
Creating nginx ... done
[Mac]$ docker-compose exec --user 1000 php bash
[PHP]$ pwd
/home/docker
[PHP]$ cd laravel
[PHP]$ composer install
[PHP]$ chmod -R 777 storage
[PHP]$ chmod -R 777 bootstrap/cache
[PHP]$ cp -p .env.example .env
[PHP]$ php artisan key:generate
[PHP]$ chmod 755 bin/clear-laravel.sh
[PHP]$ bin/clear-laravel.sh
[PHP]$ php artisan migrate:fresh --seed
동작 확인(Mac 호스트 편집)
[Mac]$ sudo vi /private/etc/hosts
★下記を点線内を追記
---
127.0.0.1 laravel.local
---
:wq
브라우저에서 동작 확인
http://laravel.local/
컨테이너 삭제
[Mac]$ docker-compose down --rmi all --volumes
※참고
《멸망의 주문》 Docker Compose로 만든 컨테이너, 이미지, 볼륨, 네트워크를 일괄 완전 소거하는 편리 명령
Reference
이 문제에 관하여(Docker Compose로 Laravel 개발 환경을 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/_bobtabo_/items/2afe45d78ca45951e64f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
version: '3'
volumes:
phpsocket:
services:
nginx:
〜 略 〜
volumes:
- ./src:/home/docker
- phpsocket:/var/run
depends_on:
- php
php:
〜 略 〜
- '9000:9000'
volumes:
- ./src:/home/docker
- phpsocket:/var/run
〜 略 〜
db:
image: mysql:5.7
〜 略 〜
MYSQL_DATABASE: hoge
MYSQL_USER: fuga
MYSQL_PASSWORD: docker#DOCKER1234
MYSQL_ROOT_PASSWORD: docker#DOCKER1234
〜 略 〜
version: '3.8'
volumes:
phpsocket:
services:
nginx:
〜 略 〜
volumes:
- ./nginx/templates:/etc/nginx/templates
- ./src:/home/docker
- phpsocket:/var/run
depends_on:
- php
environment:
- APP_NAME=${APP_NAME}
php:
〜 略 〜
- '${XDEBUG_PORT}:9001'
volumes:
- ./src:/home/docker
- phpsocket:/var/run
〜 略 〜
db:
image: mysql:8
〜 略 〜
MYSQL_DATABASE: ${DATABASE_NAME}
MYSQL_USER: ${DATABASE_USER}
MYSQL_PASSWORD: ${DATABASE_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DATABASE_ROOT_PASSWORD}
〜 略 〜
・・・
server_name laravel.local;
・・・
location / {
root /home/docker/laravel/public;
・・・
}
・・・
location ~ \.php$ {
root /home/docker/laravel/public;
・・・
}
위에 환경 변수를 포함하도록 수정.
・・・
server_name ${APP_NAME}.local;
・・・
location / {
root /home/docker/${APP_NAME}/public;
・・・
}
・・・
location ~ \.php$ {
root /home/docker/${APP_NAME}/public;
・・・
}
다만, 문서 루트의 환경 변수 임베딩이, 아무래도 에러가 되어 무리였다.
문서 루트를 위치 밖으로 내보내면 환경 변수를 포함할 수 있습니다.
・・・
server_name ${APP_NAME}.local;
・・・
root /home/docker/${APP_NAME}/public;
location / {
・・・
}
・・・
location ~ \.php$ {
・・・
}
후술 (default.conf의 치환)로 파일명을, conf.d/default.conf → templates/default.conf.template에 리네임.
default.conf 바꾸기
# 設定の置換
COPY conf.d/default.conf /etc/nginx/conf.d/default.conf
docker-compose.yml의 volumes로 해결한다.
services:
nginx:
〜 略 〜
volumes:
- ./nginx/templates:/etc/nginx/templates
그래서 Dockerfile 내에서 COPY는 더 이상 필요하지 않습니다.
Composer2.x를 설치하는 수정
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
latest로 하고 있었기 때문에 최신판이 들어 있다고 생각했는데, 왠지 1.x 이었기 때문에 2.x 로 고정.
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
XDebug 버전 고정
RUN pecl install xdebug
이 상태에서 Xdebug 3.x가 설치됩니다.
Xdebug 2.x 와 Xdebug 3.x 는, 설정 파일의 기술이 다르고, 지금까지의 설정이라고 움직이지 않는다. (빠졌어)
Xdebug 2.x에 고정. (3.x의 설정은, 또 이번)
RUN pecl install xdebug-2.9.8
Laravel 준비
[Mac]$ docker-compose exec --user 1000 php bash
[PHP]$ rm -fdR laravel
[PHP]$ composer create-project --prefer-dist laravel/laravel laravel "8.*"
[PHP]$ cd laravel
[PHP]$ composer require --dev barryvdh/laravel-ide-helper
[PHP]$ composer require --dev squizlabs/php_codesniffer
[PHP]$ mkdir bin
[PHP]$ vi bin/clear-laravel.sh
---
#!/bin/bash
php artisan view:clear
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache
composer dump-autoload
php artisan ide-helper:generate
php artisan ide-helper:models -N
php artisan ide-helper:meta
find . -name '._.DS_Store' -type f -ls -delete
---
:wq
[PHP]$ vi .env.example
---
:%s/DB_HOST=127.0.0.1/DB_HOST=mysql/g
:%s/DB_DATABASE=laravel/DB_DATABASE=hoge/g
:%s/DB_USERNAME=root/DB_USERNAME=fuga/g
:%s/DB_PASSWORD=/DB_PASSWORD="docker#DOCKER1234"/g
---
:wq
완성! !
htps : // 기주 b. 코 m/보 b타보/도 c케 r3
※참고
docker의 nginx.conf에 환경 변수를 적용하는 방법
사용법
[Mac]$ cd <任意のディレクトリ>
[Mac]$ git clone https://github.com/bobtabo/docker3.git docker
[Mac]$ cd docker
[Mac]$ cp -p .env.example .env
[Mac]$ docker-compose up -d
・・・
Creating mysql ... done
Creating php ... done
Creating nginx ... done
[Mac]$ docker-compose exec --user 1000 php bash
[PHP]$ pwd
/home/docker
[PHP]$ cd laravel
[PHP]$ composer install
[PHP]$ chmod -R 777 storage
[PHP]$ chmod -R 777 bootstrap/cache
[PHP]$ cp -p .env.example .env
[PHP]$ php artisan key:generate
[PHP]$ chmod 755 bin/clear-laravel.sh
[PHP]$ bin/clear-laravel.sh
[PHP]$ php artisan migrate:fresh --seed
동작 확인(Mac 호스트 편집)
[Mac]$ sudo vi /private/etc/hosts
★下記を点線内を追記
---
127.0.0.1 laravel.local
---
:wq
브라우저에서 동작 확인
http://laravel.local/
컨테이너 삭제
[Mac]$ docker-compose down --rmi all --volumes
※참고
《멸망의 주문》 Docker Compose로 만든 컨테이너, 이미지, 볼륨, 네트워크를 일괄 완전 소거하는 편리 명령
Reference
이 문제에 관하여(Docker Compose로 Laravel 개발 환경을 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/_bobtabo_/items/2afe45d78ca45951e64f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# 設定の置換
COPY conf.d/default.conf /etc/nginx/conf.d/default.conf
services:
nginx:
〜 略 〜
volumes:
- ./nginx/templates:/etc/nginx/templates
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
latest로 하고 있었기 때문에 최신판이 들어 있다고 생각했는데, 왠지 1.x 이었기 때문에 2.x 로 고정.
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
XDebug 버전 고정
RUN pecl install xdebug
이 상태에서 Xdebug 3.x가 설치됩니다.
Xdebug 2.x 와 Xdebug 3.x 는, 설정 파일의 기술이 다르고, 지금까지의 설정이라고 움직이지 않는다. (빠졌어)
Xdebug 2.x에 고정. (3.x의 설정은, 또 이번)
RUN pecl install xdebug-2.9.8
Laravel 준비
[Mac]$ docker-compose exec --user 1000 php bash
[PHP]$ rm -fdR laravel
[PHP]$ composer create-project --prefer-dist laravel/laravel laravel "8.*"
[PHP]$ cd laravel
[PHP]$ composer require --dev barryvdh/laravel-ide-helper
[PHP]$ composer require --dev squizlabs/php_codesniffer
[PHP]$ mkdir bin
[PHP]$ vi bin/clear-laravel.sh
---
#!/bin/bash
php artisan view:clear
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache
composer dump-autoload
php artisan ide-helper:generate
php artisan ide-helper:models -N
php artisan ide-helper:meta
find . -name '._.DS_Store' -type f -ls -delete
---
:wq
[PHP]$ vi .env.example
---
:%s/DB_HOST=127.0.0.1/DB_HOST=mysql/g
:%s/DB_DATABASE=laravel/DB_DATABASE=hoge/g
:%s/DB_USERNAME=root/DB_USERNAME=fuga/g
:%s/DB_PASSWORD=/DB_PASSWORD="docker#DOCKER1234"/g
---
:wq
완성! !
htps : // 기주 b. 코 m/보 b타보/도 c케 r3
※참고
docker의 nginx.conf에 환경 변수를 적용하는 방법
사용법
[Mac]$ cd <任意のディレクトリ>
[Mac]$ git clone https://github.com/bobtabo/docker3.git docker
[Mac]$ cd docker
[Mac]$ cp -p .env.example .env
[Mac]$ docker-compose up -d
・・・
Creating mysql ... done
Creating php ... done
Creating nginx ... done
[Mac]$ docker-compose exec --user 1000 php bash
[PHP]$ pwd
/home/docker
[PHP]$ cd laravel
[PHP]$ composer install
[PHP]$ chmod -R 777 storage
[PHP]$ chmod -R 777 bootstrap/cache
[PHP]$ cp -p .env.example .env
[PHP]$ php artisan key:generate
[PHP]$ chmod 755 bin/clear-laravel.sh
[PHP]$ bin/clear-laravel.sh
[PHP]$ php artisan migrate:fresh --seed
동작 확인(Mac 호스트 편집)
[Mac]$ sudo vi /private/etc/hosts
★下記を点線内を追記
---
127.0.0.1 laravel.local
---
:wq
브라우저에서 동작 확인
http://laravel.local/
컨테이너 삭제
[Mac]$ docker-compose down --rmi all --volumes
※참고
《멸망의 주문》 Docker Compose로 만든 컨테이너, 이미지, 볼륨, 네트워크를 일괄 완전 소거하는 편리 명령
Reference
이 문제에 관하여(Docker Compose로 Laravel 개발 환경을 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/_bobtabo_/items/2afe45d78ca45951e64f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
RUN pecl install xdebug
RUN pecl install xdebug-2.9.8
[Mac]$ docker-compose exec --user 1000 php bash
[PHP]$ rm -fdR laravel
[PHP]$ composer create-project --prefer-dist laravel/laravel laravel "8.*"
[PHP]$ cd laravel
[PHP]$ composer require --dev barryvdh/laravel-ide-helper
[PHP]$ composer require --dev squizlabs/php_codesniffer
[PHP]$ mkdir bin
[PHP]$ vi bin/clear-laravel.sh
---
#!/bin/bash
php artisan view:clear
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache
composer dump-autoload
php artisan ide-helper:generate
php artisan ide-helper:models -N
php artisan ide-helper:meta
find . -name '._.DS_Store' -type f -ls -delete
---
:wq
[PHP]$ vi .env.example
---
:%s/DB_HOST=127.0.0.1/DB_HOST=mysql/g
:%s/DB_DATABASE=laravel/DB_DATABASE=hoge/g
:%s/DB_USERNAME=root/DB_USERNAME=fuga/g
:%s/DB_PASSWORD=/DB_PASSWORD="docker#DOCKER1234"/g
---
:wq
완성! !
htps : // 기주 b. 코 m/보 b타보/도 c케 r3
※참고
docker의 nginx.conf에 환경 변수를 적용하는 방법
사용법
[Mac]$ cd <任意のディレクトリ>
[Mac]$ git clone https://github.com/bobtabo/docker3.git docker
[Mac]$ cd docker
[Mac]$ cp -p .env.example .env
[Mac]$ docker-compose up -d
・・・
Creating mysql ... done
Creating php ... done
Creating nginx ... done
[Mac]$ docker-compose exec --user 1000 php bash
[PHP]$ pwd
/home/docker
[PHP]$ cd laravel
[PHP]$ composer install
[PHP]$ chmod -R 777 storage
[PHP]$ chmod -R 777 bootstrap/cache
[PHP]$ cp -p .env.example .env
[PHP]$ php artisan key:generate
[PHP]$ chmod 755 bin/clear-laravel.sh
[PHP]$ bin/clear-laravel.sh
[PHP]$ php artisan migrate:fresh --seed
동작 확인(Mac 호스트 편집)
[Mac]$ sudo vi /private/etc/hosts
★下記を点線内を追記
---
127.0.0.1 laravel.local
---
:wq
브라우저에서 동작 확인
http://laravel.local/
컨테이너 삭제
[Mac]$ docker-compose down --rmi all --volumes
※참고
《멸망의 주문》 Docker Compose로 만든 컨테이너, 이미지, 볼륨, 네트워크를 일괄 완전 소거하는 편리 명령
Reference
이 문제에 관하여(Docker Compose로 Laravel 개발 환경을 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/_bobtabo_/items/2afe45d78ca45951e64f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[Mac]$ cd <任意のディレクトリ>
[Mac]$ git clone https://github.com/bobtabo/docker3.git docker
[Mac]$ cd docker
[Mac]$ cp -p .env.example .env
[Mac]$ docker-compose up -d
・・・
Creating mysql ... done
Creating php ... done
Creating nginx ... done
[Mac]$ docker-compose exec --user 1000 php bash
[PHP]$ pwd
/home/docker
[PHP]$ cd laravel
[PHP]$ composer install
[PHP]$ chmod -R 777 storage
[PHP]$ chmod -R 777 bootstrap/cache
[PHP]$ cp -p .env.example .env
[PHP]$ php artisan key:generate
[PHP]$ chmod 755 bin/clear-laravel.sh
[PHP]$ bin/clear-laravel.sh
[PHP]$ php artisan migrate:fresh --seed
[Mac]$ sudo vi /private/etc/hosts
★下記を点線内を追記
---
127.0.0.1 laravel.local
---
:wq
[Mac]$ docker-compose down --rmi all --volumes
Reference
이 문제에 관하여(Docker Compose로 Laravel 개발 환경을 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/_bobtabo_/items/2afe45d78ca45951e64f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)