Docker에서 Laravel (Apache + php-fpm + mysql)을 구축하는 절차
5895 단어 MySQL아파치라라벨php-fpmdocker-compose
다음 환경을 만듭니다.
또 Docker등은 인스톨 되고 있는 것으로 합니다
최종 디렉토리
project_name
├── laradock
│ ├─ apahce2
│ │ └─ Dockerfileなど
│ ├─ mysql
│ │ └─ Dockerfileなど
│ ├─ php-fpm
│ │ └─ Dockerfileなど
│ ├─ workspace
│ │ └─ Dockerfileなど
│ ├─ .laradock
│ │ └─ data
│ │
│ ├── docker-compose.yml
│ └── .env
│
└── laravel-app
└── laravelのアプリを配置
Docker에 필요한 설정하기
laradock을 복제하고 .env 만들기
다음에 필요합니다
.laradock/data
$ git clone https://github.com/laradock/laradock.git
$ cd laradock
$ cp env-example .env
$ mkdir -p .laradock/data
env 파일을 만지다
$ vim .env
.env
# laradock内に作りたい為(13行目)
- DATA_SAVE_PATH=~/.laradock/data
+ DATA_SAVE_PATH=.laradock/data
# workspaceとはバージョンを別にしたい為(20行目)
+ PHP_FPM_VERSION=56
# ポートの重複を避ける為(84,85行目)
- APACHE_HOST_HTTP_PORT=80
- APACHE_HOST_HTTPS_PORT=443
+ APACHE_HOST_HTTP_PORT=8888
+ APACHE_HOST_HTTPS_PORT=8443
mysql 설정
$ vim mysql/Dockerfile
Dockerfile
# 1行目
- FROM mysql:8.0
+ FROM mysql:5.5
아파치 설정
$ vim apache2/Dockerfile
Dockerfile
# 1行目
- FROM webdevops/apache:ubuntu-16.04
+ FROM webdevops/apache:centos-7
docker-compose.yml 설정
$ vim docker-compose.yml
docker-compose.yml
# php-fpmの設定(78,82行目)
- dockerfile: "Dockerfile-${PHP_VERSION}"
+ dockerfile: "Dockerfile-${PHP_FPM_VERSION}"
- ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini
+ ./php-fpm/php${PHP_FPM_VERSION}.ini:/usr/local/etc/php/php.ini
compose하다
네 가지를 시작합니다.
$ docker-compose up -d workspace mysql php-fpm apache2
상당히 시간이 걸리므로 커피를 마시고 기다리자.
laravel 앱 만들기 및 설정 변경
workspace의 컨테이너 안으로 들어가기
$ docker-compose ps "workspace"
Name Command State Ports
-----------------------------------------------------------------------
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
$ docker exec -it laradock_workspace_1 bash
컨테이너에서 laravel-app 만들기
root@{コンテナID}:/var/www#
長いので省略
# composer create-project --prefer-dist laravel/laravel project_name
여기서도 시간이 걸리니 기다리자
끝나면
# exit
그리고 컨테이너에서 나가자.docker-compose.yml 설정 변경
docker-compose.yml
- ${APPLICATION}:/var/www
+ ${APPLICATION}project_name:/var/www
이 상태에서
http://localhost:8888
에 액세스해도 연결되지 않습니다.
왜 연결되지 않는지 로그를 보자.
$ docker logs -f laradocktuna_apache2_1
-> Executing /opt/docker/bin/service.d/httpd.d//10-init.sh
2017-07-09 06:43:10,580 INFO success: apached entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
AH00526: Syntax error on line 119 of /etc/httpd/conf/httpd.conf:
DocumentRoot '/var/www/html' is not a directory, or is not readable
2017-07-09 06:43:10,629 INFO exited: apached (exit status 1; not expected)
영원히 로그가 계속 나오고 있네요… ✌︎('ω'✌︎ )
주목해야 할 것은
DocumentRoot
'/var/www/html' is not a directory
(/var/www/htmlのディレクトリが見つからないよ!)
그래서
apache 컨테이너에 들어가서 DocumentRoot를 설정합시다.
아파치 컨테이너에 들어가기
$ docker-compose ps "apache2"
Name Command State Ports
-------------------------------------------------------------------------------------------------------------
laradocktuna_apache2_1 /opt/docker/bin/entrypoint ... Up 0.0.0.0:8443->443/tcp, 0.0.0.0:8888->80/tcp
$ docker exec -it laradock_apache2_1 bash
httpd.conf 설정 변경
[root@{コンテナID} public]#
長いので省略
# vi /etc/httpd/conf/httpd.conf
httpd.conf
# DocumentRootを変更する(119行目)
- DocumentRoot "/var/www/html"
+ DocumentRoot "/var/www/public"
httpd 서비스 다시 로드
# service httpd restart
끝나면 # exit
괜찮습니다.http://localhost:8888
에 액세스 해 보면 ....
마지막으로
DocumentRoot의 설정을 일부러 컨테이너에 들어가지 않고 하는 방법도 있습니다.
미리 httpd.conf를 준비하십시오.
Dockerfile에서 COPY 문을 작성하는 것입니다.
그 외 Dockerfile등으로 끝낼 수 있는 방법이 있으면
코멘트 잘 부탁드립니다.
또한 여기에 최소화 한 것을 둡니다.
htps : // 기주 b. 코 m / 츠나 밥 / 아라도 ck
Reference
이 문제에 관하여(Docker에서 Laravel (Apache + php-fpm + mysql)을 구축하는 절차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k-waragai/items/cc0ad847cf8391c796db텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)