Je me sentais mal à l'aise avec le fonctionnement de Laravel's Blade et je voulais séparer le front, alors j'ai étudié et préparé l'environnement de développement. La raison d'utiliser le même référentiel est que lors du développement sur la face avant, j'ai pensé qu'il serait plus facile de vérifier l'API si elles étaient identiques. Je vais le laisser comme un article tout en enquêtant.
https://github.com/nagi125/spa_dev_template
Un ensemble de projets Nuxt sera préparé dans le répertoire "web", et un ensemble de projets Laravel sera préparé dans le répertoire "api". Différents fichiers sont partagés entre le côté Nuxt et le côté Laravel en utilisant la fonction de volume de docker. Et du côté Nuxt, définissez la position par défaut sur "/ app", et du côté Laravel, définissez la position par défaut sur "/ app" et vous avez terminé.
Nginx
FROM nginx:1.19-alpine
ENV TZ Asia/Tokyo
COPY conf/default.conf /etc/nginx/conf.d/default.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;
}
}
Puisqu'il s'agit d'un environnement de développement, certaines parties sont un peu brutes. Dans le cas de / api, le RP est configuré pour aller à Laravel et la valeur par défaut est pour aller à Nuxt.
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"]
Puisqu'il s'agit d'un groupe de fils plutôt que de npm, il a été ajusté pour utiliser du fil. Laissez la zone de travail comme "/ app".
Laravel
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
Ce conteneur a également une zone de travail "/ 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 partage le conteneur Nuxt et Laravel "/ app" avec l'hôte "./web" et "./api". Si vous souhaitez ajouter une base de données, vous pouvez l'ajouter à docker-compose.
Une fois que vous avez préparé ce qui précède, l'environnement de développement doit démarrer avec la commande suivante.
$ docker-compose build
$ docker-compise up
Nuxt Créez un projet Nuxt avec la commande suivante. La réponse à la question est omise ici. Veuillez le régler à votre convenance.
$ docker-compose exec web yarn create nuxt-app ./
Démarrez le mode de développement avec la commande suivante.
$ docker-compose exec web yarn dev
Laravel Créez un projet Laravel avec la commande suivante. Veuillez choisir la version que vous aimez.
$ docker-compose exec api composer create-project --prefer-dist laravel/laravel ./ "6.*"
Une fois que les projets Nuxt et Laravel ont été générés, ils peuvent être utilisés comme environnement de développement. Vous pouvez accéder au côté Nuxt avec "localhost" et au côté Laravel avec "localhost / api".
Puisqu'il s'agit d'un Dockerfile pour le développement, si vous souhaitez utiliser ECS en production, veuillez préparer un Dockerfile pour la production dans chaque répertoire en tant que Dockerfile.dev.
Ce sera une note du contenu de l'enquête, mais j'espère que cela vous sera utile.
Recommended Posts