docker-compose를 사용하여 동일한 리포지토리에서 Nuxt (web) + Laravel (API) 개발 환경을 준비하십시오.
10711 단어 nuxtdocker-compose도커라라벨
개요
라라벨의 블레이드 운용에 어색함을 느끼고 프런트를 분리하고 싶어졌기 때문에 조사해 개발 환경을 준비했다.
같은 리포지토리로 한 이유는 프런트측의 개발을 하고 있을 때에 같은 쪽이 API의 검증을 하기 쉽다고 생각했기 때문입니다.
조사 다음에 기사로 남겨둔다.
환경
완성 이미지
완제품
htps : // 기주 b. 코 m / 나기 125 / s 파_ v_ mp
※ Nuxt와 Laravel의 프로젝트는 README.md를 보고 생성해 주십시오.
자꾸 설명
"web"이라는 디렉토리에 Nuxt의 프로젝트 세트가, "api"라는 디렉토리에 Laravel의 프로젝트 세트가 준비됩니다.
docker의 volume 기능을 이용해 Nuxt측과 Laravel측에서, 각종 파일을 공유하고 있습니다.
그리고 Nuxt측은 디폴트 위치를 「/app」에, Laravel측도 디폴트 위치를 「/app」로 해 두면 완성입니다.
각 컨테이너에 대해
Nginx
FROM nginx:1.19-alpine
ENV TZ Asia/Tokyo
COPY conf/default.conf /etc/nginx/conf.d/default.conf
Nginx conf 파일
server {
server_name localhost;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://web:3000;
}
location /api {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass api:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
개발 환경이므로 약간 잡담하게 만드는 부분은 있습니다.
/api의 경우는 Laravel을 보러 가고, 디폴트는 Nuxt를 보러 가도록(듯이) RP 설정되어 있습니다.
※FastCGI의 경우는 엄밀하게는 RP라고 말하지 않을지도 모릅니다만・・・.
Nuxt.js
FROM node:13.8-alpine
RUN apk update && \
apk add git && \
apk add --no-cache curl && \
curl -o- -L https://yarnpkg.com/install.sh | sh && \
yarn add @vue/cli @vue/cli-service-global nuxt create-nuxt-app
ENV TZ Asia/Tokyo
ENV PATH $HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH
WORKDIR /app
CMD ["/bin/ash"]
npm이 아니라 yarn파이므로 yarn을 이용하도록 조정하고 있습니다.
작업 영역을 "/app"로 둡니다.
라라벨
FROM php:7.4-fpm-alpine
ENV TZ Asia/Tokyo
ENV COMPOSER_ALLOW_SUPERUSER 1
# install Lib
RUN apk update && \
apk add --no-cache --virtual .php-builds oniguruma-dev git zip unzip
# add php-ext-module
RUN docker-php-ext-install mbstring && \
docker-php-ext-enable mbstring
# install Composer
RUN curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer && \
chmod +x /usr/local/bin/composer
WORKDIR /app
이 컨테이너도 작업 영역을 "/app"로 둡니다.
docker-compose
version: '3'
services:
nginx:
container_name: nginx
build:
context: ./docker/nginx
dockerfile: Dockerfile
ports:
- 80:80
tty: true
restart: always
depends_on:
- web
web:
container_name: web
build:
context: ./docker/web
dockerfile: Dockerfile
environment:
PORT: '3000'
HOST: '0.0.0.0'
expose:
- 3000
volumes:
- ./web:/app
stdin_open: true
tty: true
restart: always
depends_on:
- api
api:
container_name: api
build:
context: ./docker/api
dockerfile: Dockerfile
environment:
LANG: 'ja_JP.UTF-8'
TZ: 'Asia/Tokyo'
volumes:
- ./api:/app
expose:
- 9000
tty: true
restart: always
docker-compose는 Nuxt와 Laravel 컨테이너의 "/app"을 호스트의 "./web"과 "./api"와 공유합니다.
DB를 추가하고 싶다면 docker-compose에 작성해야합니다.
시작
위까지 준비가 되면 아래의 커맨드로 개발 환경이 일어날 것입니다.
$ docker-compose build
$ docker-compise up
Nuxt와 Laravel 프로젝트 만들기
Nuxt
아래 명령으로 Nuxt 프로젝트를 만듭니다.
질문에 대한 대답은 여기에서 생략합니다.
원하는 설정으로 설정하십시오.
$ docker-compose exec web yarn create nuxt-app ./
아래 명령으로 개발 모드를 시작합니다.
$ docker-compose exec web yarn dev
라라벨
아래 명령으로 Laravel 프로젝트를 만듭니다.
버전은 좋아하는 물건으로하십시오.
$ docker-compose exec api composer create-project --prefer-dist laravel/laravel ./ "6.*"
완성
Nuxt와 Laravel 프로젝트 생성이 완료되면 개발 환경으로 사용할 수 있게 됩니다.
Nuxt측에는 「localhost」로, Laravel측에는 「localhost/api」로 액세스 할 수 있습니다.
※Laravel측의 route 설정을 잊지 않고.
프로덕션 운용은?
개발용의 Dockerfile이므로 프로덕션에서 ECS라든지를 이용하는 경우는 이쪽은 Dockerfile.dev로서 프로덕션용의 Dockerfile을 각 디렉토리에 준비해 주세요.
마지막으로
조사 내용의 메모가 됩니다만, 뭔가의 도움이 되면 다행입니다.
Reference
이 문제에 관하여(docker-compose를 사용하여 동일한 리포지토리에서 Nuxt (web) + Laravel (API) 개발 환경을 준비하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nagi125/items/09ddbbfa923c0999494e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)