docker-compose up -d로 php-fpm nginx mysql의 환경 구축 (laravel 환경 구축)
전제
docker-compose up -d 실행만으로 laravel 환경을 로컬에서 만들고 싶었습니다.
laravel 용 컨테이너의 기재 정보가 별로 없으므로 여기에 기재해 둔다 (laradoc 이외로)
※초자신용의 메모이므로 적당한 개소가 있습니다만 용서해 주세요.
직접 읽을 수 없으면 업데이트합니다.
만들 환경
컨테이너 3개
・php(app)--laravel의 자재 두기
· nginx (web)
· mysql (db)
디렉토리 구성
laravel_project
├── docker-compose.yml
├── docker-nginx
│ ├── Dockerfile
│ └── default.conf
└── docker-php
└── Dockerfile
작업
1. 작업용 디렉토리 작성 & 이동(laravel_project라는 이름으로 합니다.)
mkdir laravel_project && cd laravel_project
2.docker-compose.yml 만들기
docker-compose.ymlversion: '3'
services:
web:
build: ./docker-nginx
ports:
- 80:80
depends_on:
- app
volumes:
- ./:/var/www/html
- ./docker-nginx/default.conf:/etc/nginx/conf.d/default.conf
links:
- app
app:
build: ./docker-php
depends_on:
- db
links:
- db
volumes:
- ./:/var/www/html
db:
image: mysql:5.7.19
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root #ここにroot用のパスワードを記載
MYSQL_DATABASE: myblog_db #ここにデータベースを記載
MYSQL_USER: myblog_user #ここにユーザ名を記載
MYSQL_PASSWORD: myblog_password #ここにユーザ用パスワードを記載
3.Dockerfile의 기재
docker-compose.yml의 build
에 디렉토리를 나열하면 해당 디렉토리의 Dockerfile을보고 이미지를 시작합니다.
■docker-nginx/Dockerfile
FROM nginx:1.11
RUN apt-get update && apt-get install -y \
vim \
unzip \
zip \
git
FROM에 기동 이미지, RUN에 기동시에 실행시키는 커멘드를 기재
컨테이너를 만들 때 update와 필요한 명령을 설치하는 것이 유용하다고 생각합니다.
■docker-php/Dockerfile
FROM php:7-fpm
RUN apt-get update && apt-get install -y \
vim \
zip \
unzip \
iputils-ping \
git
RUN docker-php-ext-install pdo_mysql
PHP는 PDO가 없으므로 설치합니다.
4.docker-nginx/default.conf의 기재
docker-nginx/default.confserver {
listen 80;
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/myblog/public;
location / {
root /var/www/html/myblog/public;
index index.php index.html index.htm;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/myblog/public;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
이번에는 laravel에서 myblog라는 새로운 프로젝트를 만들므로 문서 루트에는/var/www/html/myblog/public
라고 기재해 둡시다
■20181007 추가
위의 nginx 설정이라면 root 디렉토리 이외는 404의 에러가 되어 버렸다.
그래서 다음과 같이 default.conf를 다시 작성한다.
default.confserver {
listen 80;
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/myblog/public;
location / {
try_files $uri $uri/ @laravel;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
location ~ \.php$ {
try_files $uri $uri/ @laravel;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location @laravel {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/html/myblog/public/index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
■다음 링크 참고
nginx에서 wordpress의 퍼머 링크를 기본값 이외에 대응
5.docker-compose up -d
지금까지 준비한 후 Docker를 시작합니다.
docker-compose up -d
기동까지 시간이 걸립니다만, 이하 문언이 나오면 기동할 수 있었다고 생각합니다.
Starting laravel_db_1 ... done
Starting laravel_app_1 ... done
Starting laravel_web_1 ... done
일단 다음 명령으로 시작할 수 있는지 확인합시다.
$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------
laravel_app_1 docker-php-entrypoint php-fpm Up 9000/tcp
laravel_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
laravel_web_1 nginx -g daemon off; Up 0.0.0.0:80->80/tcp
State
가 Up
가 되어 있으면 기동할 수 있어요.
6.Docker 컨테이너 내에서 laravel 준비
Docker 컨테이너 안으로 들어가기
docker-compose exec app /bin/bash
root@fdb72742f724:/var/www/html#
아래 공식 composer 사이트에서 composer를 설치하는 명령을 실시
h tps : // 게이 t m 포세 r. 오 rg / 도 w 응 아 d /
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
composer가 설치되어 있는지 확인
ls -la
composer.phar
Docker 프로젝트 만들기
php composer.phar create-project --prefer-dist laravel/laravel myblog
조금 시간이 걸리지만 myblog가 있다면 성공
ls -la
myblog
그리고는 브라우저로 localhost
에 액세스 해 Laravel의 문자가 나와 있으면 ok입니다.
이번에는 여기까지!
Reference
이 문제에 관하여(docker-compose up -d로 php-fpm nginx mysql의 환경 구축 (laravel 환경 구축)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/bzy/items/f251d47cba836a3a92df
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
컨테이너 3개
・php(app)--laravel의 자재 두기
· nginx (web)
· mysql (db)
디렉토리 구성
laravel_project
├── docker-compose.yml
├── docker-nginx
│ ├── Dockerfile
│ └── default.conf
└── docker-php
└── Dockerfile
작업
1. 작업용 디렉토리 작성 & 이동(laravel_project라는 이름으로 합니다.)
mkdir laravel_project && cd laravel_project
2.docker-compose.yml 만들기
docker-compose.ymlversion: '3'
services:
web:
build: ./docker-nginx
ports:
- 80:80
depends_on:
- app
volumes:
- ./:/var/www/html
- ./docker-nginx/default.conf:/etc/nginx/conf.d/default.conf
links:
- app
app:
build: ./docker-php
depends_on:
- db
links:
- db
volumes:
- ./:/var/www/html
db:
image: mysql:5.7.19
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root #ここにroot用のパスワードを記載
MYSQL_DATABASE: myblog_db #ここにデータベースを記載
MYSQL_USER: myblog_user #ここにユーザ名を記載
MYSQL_PASSWORD: myblog_password #ここにユーザ用パスワードを記載
3.Dockerfile의 기재
docker-compose.yml의 build
에 디렉토리를 나열하면 해당 디렉토리의 Dockerfile을보고 이미지를 시작합니다.
■docker-nginx/Dockerfile
FROM nginx:1.11
RUN apt-get update && apt-get install -y \
vim \
unzip \
zip \
git
FROM에 기동 이미지, RUN에 기동시에 실행시키는 커멘드를 기재
컨테이너를 만들 때 update와 필요한 명령을 설치하는 것이 유용하다고 생각합니다.
■docker-php/Dockerfile
FROM php:7-fpm
RUN apt-get update && apt-get install -y \
vim \
zip \
unzip \
iputils-ping \
git
RUN docker-php-ext-install pdo_mysql
PHP는 PDO가 없으므로 설치합니다.
4.docker-nginx/default.conf의 기재
docker-nginx/default.confserver {
listen 80;
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/myblog/public;
location / {
root /var/www/html/myblog/public;
index index.php index.html index.htm;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/myblog/public;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
이번에는 laravel에서 myblog라는 새로운 프로젝트를 만들므로 문서 루트에는/var/www/html/myblog/public
라고 기재해 둡시다
■20181007 추가
위의 nginx 설정이라면 root 디렉토리 이외는 404의 에러가 되어 버렸다.
그래서 다음과 같이 default.conf를 다시 작성한다.
default.confserver {
listen 80;
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/myblog/public;
location / {
try_files $uri $uri/ @laravel;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
location ~ \.php$ {
try_files $uri $uri/ @laravel;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location @laravel {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/html/myblog/public/index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
■다음 링크 참고
nginx에서 wordpress의 퍼머 링크를 기본값 이외에 대응
5.docker-compose up -d
지금까지 준비한 후 Docker를 시작합니다.
docker-compose up -d
기동까지 시간이 걸립니다만, 이하 문언이 나오면 기동할 수 있었다고 생각합니다.
Starting laravel_db_1 ... done
Starting laravel_app_1 ... done
Starting laravel_web_1 ... done
일단 다음 명령으로 시작할 수 있는지 확인합시다.
$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------
laravel_app_1 docker-php-entrypoint php-fpm Up 9000/tcp
laravel_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
laravel_web_1 nginx -g daemon off; Up 0.0.0.0:80->80/tcp
State
가 Up
가 되어 있으면 기동할 수 있어요.
6.Docker 컨테이너 내에서 laravel 준비
Docker 컨테이너 안으로 들어가기
docker-compose exec app /bin/bash
root@fdb72742f724:/var/www/html#
아래 공식 composer 사이트에서 composer를 설치하는 명령을 실시
h tps : // 게이 t m 포세 r. 오 rg / 도 w 응 아 d /
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
composer가 설치되어 있는지 확인
ls -la
composer.phar
Docker 프로젝트 만들기
php composer.phar create-project --prefer-dist laravel/laravel myblog
조금 시간이 걸리지만 myblog가 있다면 성공
ls -la
myblog
그리고는 브라우저로 localhost
에 액세스 해 Laravel의 문자가 나와 있으면 ok입니다.
이번에는 여기까지!
Reference
이 문제에 관하여(docker-compose up -d로 php-fpm nginx mysql의 환경 구축 (laravel 환경 구축)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/bzy/items/f251d47cba836a3a92df
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
mkdir laravel_project && cd laravel_project
version: '3'
services:
web:
build: ./docker-nginx
ports:
- 80:80
depends_on:
- app
volumes:
- ./:/var/www/html
- ./docker-nginx/default.conf:/etc/nginx/conf.d/default.conf
links:
- app
app:
build: ./docker-php
depends_on:
- db
links:
- db
volumes:
- ./:/var/www/html
db:
image: mysql:5.7.19
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root #ここにroot用のパスワードを記載
MYSQL_DATABASE: myblog_db #ここにデータベースを記載
MYSQL_USER: myblog_user #ここにユーザ名を記載
MYSQL_PASSWORD: myblog_password #ここにユーザ用パスワードを記載
FROM nginx:1.11
RUN apt-get update && apt-get install -y \
vim \
unzip \
zip \
git
FROM php:7-fpm
RUN apt-get update && apt-get install -y \
vim \
zip \
unzip \
iputils-ping \
git
RUN docker-php-ext-install pdo_mysql
server {
listen 80;
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/myblog/public;
location / {
root /var/www/html/myblog/public;
index index.php index.html index.htm;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/myblog/public;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
server {
listen 80;
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/myblog/public;
location / {
try_files $uri $uri/ @laravel;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
location ~ \.php$ {
try_files $uri $uri/ @laravel;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location @laravel {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/html/myblog/public/index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
docker-compose up -d
Starting laravel_db_1 ... done
Starting laravel_app_1 ... done
Starting laravel_web_1 ... done
$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------
laravel_app_1 docker-php-entrypoint php-fpm Up 9000/tcp
laravel_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
laravel_web_1 nginx -g daemon off; Up 0.0.0.0:80->80/tcp
docker-compose exec app /bin/bash
root@fdb72742f724:/var/www/html#
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
ls -la
composer.phar
php composer.phar create-project --prefer-dist laravel/laravel myblog
ls -la
myblog
Reference
이 문제에 관하여(docker-compose up -d로 php-fpm nginx mysql의 환경 구축 (laravel 환경 구축)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bzy/items/f251d47cba836a3a92df텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)