【PHP8.0×Laravel8.0 대응】Docker를 사용한 Laravel의 환경 구축
소개
최근에는 현장에서도, Docker 환경하에서 Laravle을 만지는 것이 늘어나 조금은 지견도 모여 왔을까 생각하므로, 잊지 않도록 망비록으로서 남겨 둡니다
여기에서는
docker
나 docker-compose
의 설치에 관해서는 언급하지 않으므로, 아직 분은 이 기사을 알기 쉬웠으므로 참고로 해보십시오.기사내의 미비나, 좀더 이러한 쪽이 좋다고 하는 어드바이스가 있으면 코멘트 부탁합니다
구성
임의의 디렉토리에
SampleProject
를 작성해 아래의 디텍트 구성으로 환경을 구축합니다SampleProject
├── docker-compose.yml
├── docker
│ ├── php
│ │ ├── Dockerfile
│ │ └── php.ini
│ └── nginx
│ └── default.conf
└── src
└── Laravelのプロジェクトファイル
docker-compose.yml의 내용
docker-compose.yml
는 여러 컨테이너를 동시에 움직이는 도구이며 Docker Compose
를 사용하는 데 사용되는 YML 파일입니다.docker-compose.yml
version: '3'
services:
php:
build: ./docker/php
volumes:
- ./src:/var/www
nginx:
image: nginx
ports:
- 80:80
volumes:
- ./src:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: sample_project
MYSQL_USER: docker
MYSQL_PASSWORD: docker
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- ./docker/db/data:/var/lib/mysql
- ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
- ./docker/db/sql:/docker-entrypoint-initdb.d
ports:
- 3306:3306
node:
image: node:12.13-alpine
tty: true
volumes:
- ./src:/var/www
working_dir: /var/www
Dockerfile의 내용
Dockerfile
는 Docker에서 실행할 컨테이너의 구성 정보를 설명하는 파일입니다.FROM php:8.0-fpm
COPY php.ini /usr/local/etc/php/
RUN apt-get update \
&& apt-get install -y zlib1g-dev mariadb-client vim libzip-dev \
&& docker-php-ext-install zip pdo_mysql
#Composer install
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
WORKDIR /var/www
RUN composer global require "laravel/installer"
php.ini의 내용
php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
default.conf 내용
default.conf
는 ngninx 구성 정보를 설명하는 파일입니다.default.conf
server {
listen 80;
index index.php index.html;
root /var/www/sampleProject/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
환경 구축 절차
시작하기 원하는 곳에
SampleProject
만들기~/ $ mkdir SampleProject
docker-compose.yml
파일을 작성해, 내용은 처음에 소개했다 docker-compose.yml
의 내용을 copipe 한다~/SampleProject $ touch docker-compose.yml
Dockerfile
와 php.ini
를 만들고 내용은 처음에 소개 한 각 파일의 내용을 복사합니다.~/SampleProject/docker/php $ touch Dockerfile
~/SampleProject/docker/php $ touch php.ini
defalt.conf
파일을 작성해, 내용은 처음에 소개했다 default.conf
의 내용을 copipe 한다~/SampleProject/nginx $ touch default.conf
docker-compose.yml
파일이있는 디렉토리에서 다음 명령을 실행하여 docker
를 시작합니다.~/SampleProject $ docker-compose up -d
Creating php ... done
Creating db-host ... done
Creating sampleproject_node ... done
Creating nginx ... done
php 컨테이너 안으로 들어가기
~/SampleProject $ docker-compose exec php bash
php 컨테이너 내에서 Laravel 프로젝트 만들기
root@7eb4359bf51c:/var/www# laravel new sampleProject
Laravel 프로젝트가 포함되어 있는지 확인
버전이 출력되면 OK입니다.
root@7eb4359bf51c:/var/www/sampleProject# php artisan --version
Laravel Framework 8.27.0
php 컨테이너를 빠져
root@7eb4359bf51c:/var/www# exit
이제
SampleProject/src
에 Laravel 프로젝트 파일을 만들고,http://localhost/로 이동하면 친숙한 환영 페이지가 표시됩니다.
MySQL 컨테이너에 들어가기
~/SampleProject $ docker-compose exec db bash
MySQL 컨테이너 내에서 MySQL에 로그인
root@630fbaf32806:/# mysql -u root -proot
이 프로젝트에서 사용할 데이터베이스 만들기
데이터베이스 이름은 docker-compose.yml에 지정된
MYSQL_DATABASE
와 일치해야합니다.mysql> mysql> CREATE DATABASE sample_project;
Query OK, 1 row affected (0.01 sec)
Laravel 프로젝트 파일의
.env
파일 수정.env
DB_CONNECTION=mysql
DB_HOST=db # docker-compose.ymlに記載したDBのサービス名
DB_PORT=3306
DB_DATABASE=sample_project # 使用するDB名
DB_USERNAME=root
DB_PASSWORD=root
php 컨테이너에 들어가기
~/SampleProject $ docker-compose exec php bash
php 컨테이너 내에서 마이그레이션 수행
root@7eb4359bf51c:/var/www# php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.06 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (0.04 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.02 seconds)
마이그레이션이 성공적으로 실행되면 성공입니다! !
node 컨테이너에 들어가기
~/SampleProject $ docker-compose exec node sh
/var/www
무지하게 환경 구축이 완료되면, 이 기사 를 참고로 작성한 프로젝트를 GitHub에 올려 봅시다.
Reference
이 문제에 관하여(【PHP8.0×Laravel8.0 대응】Docker를 사용한 Laravel의 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/phper_sugiyama/items/654f7a9171ae5ccf3e83텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)