環境構築
Docker周りの設定
- プロジェクトフォルダ内にdocker-compose.yamlを作成し、下記コードを記載する。
# docker-composeのバージョンを指定
version: '3'
# docker-composeが起動させる各コンテナを記載
services:
app:
container_name: app
# 実行するDockerfileのパス
build: ./docker/php
volumes:
- .:/var/www
nginx:
image: nginx
container_name: nginx
# このポートをlocalhostの末尾につけたらアプリケーションが表示される
ports:
- 8000:80
volumes:
- .:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
working_dir: /var/www
depends_on:
- app
db:
image: mysql:5.7
container_name: db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
MYSQL_USER: db-user
MYSQL_PASSWORD: db-pass
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
- dockerフォルダを作成し、さらにphpフォルダとnginxフォルダを作成する。
- nginxフォルダにdefault.confを作成し、下記コードを記載。
server {
listen 80;
#ルートフォルダを指定
root /var/www/backend/public;
#ルートファイル設定
index index.php;
location / {
root /var/www/backend/public;
index index.php;
try_files $uri $uri/ /index.php$query_string;
}
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;
}
}
- phpフォルダにphp.iniとDockerfileを作成し、それぞれ下記コードを記載。
# php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
[opcache]
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
# Dockerfile
#イメージ名
# nginxで動かすには「-fpm」が必要
FROM php:8.0-fpm
# RUNはFROMのイメージ環境によって実行させるコマンドを指定する
# データベース周りのアプリをインストール
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
# nodeJs install
RUN curl -sL https://deb.nodesource.com/setup_16.x | bash -
RUN apt-get install -y nodejs
#set up vue
RUN npm install -g @vue/cli
# 環境変数の設定
# composerをroot権限で実行させるための権限付与
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATY $PATH:/composer/vendor/bin
# 作業フォルダ名
WORKDIR /var/www
# Laravelのインストール
RUN composer global require "laravel/installer
-
docker-compose up -d
を実行し、コンテナを作成する。
参考資料
https://www.torat.jp/laravel-docker-lemp/
Laravelの設定
-
プロジェクトフォルダで
composer create-project laravel/laravel --prefer-dist フォルダ名
を実行する。今回はDocker設定の都合上フォルダ名はbackendにする。-
--prefer-dist
と—-prefer-source
の2種類があるが、distの方は配布版(zipファブル)sourceの方はgit cloneでコードを取得している。
-
-
.envファイルのデータベース設定を下記のように変更する。
.envDB_CONNECTION=mysql #イメージの種類 DB_HOST=db # container_name DB_PORT=3306 # docker-compose.yamlで設定したポート番号 DB_DATABASE=database # docker-compose.yamlのMYSQL_DATABASE DB_USERNAME=db-user # docker-compose.yamlの MYSQL_USER DB_PASSWORD=db-pass # docker-compose.yamlのMYSQL_PASSWORD
-
database/seeders/DatabaseSeeder.phpの
\App\Models\User::factory(10)->create();
のコメントアウトを外し、php artisan migrate --seed
を実行する。 -
composer require nuwave/lighthouse
を実行し、lighthouseをインストールする。 -
php artisan vendor:publish --tag=lighthouse-schema
を実行し、デフォルトをschma.graphqlを作成する。graphqlフォルダが作成され、その中に生成される -
composer require mll-lab/laravel-graphql-playground
を実行し、GraphQLの動作テストをUIで行えるライブラリをインストールする。 -
config/cors.phpに下記コードを追加する
'paths' => ['api/*', 'graphql'],
-
php artisan vendor:publish --tag=lighthouse-config
を実行し、lighthouseの設定ファイルを作成する。(この説明では使いません) - http://localhost:8000/graphql-playgroundにアクセスして、graphqlで情報が取得できるかを確認する。
参考資料
https://maasaablog.com/development/backend/php/laravel/1873/
https://kin29.info/composer-の-prefer-distってよく使うけど何してる?/
https://hara-chan.com/it/programming/prefer-dist-prefer-source-difference/
https://don-bu-rakko.com/laravel-で-graphql-を使えるようにする!-lighthouseハンズオン/#Lighthouse_の導入
Vueプロジェクトの設定
-
npm init vite@latest folder_name -- --template vue-ts
を実行し、vueプロジェクトを作成する。- npm のバージョンが7以上の場合は
—template
の前にハイフンが二つ必要(参考資料)
- npm のバージョンが7以上の場合は
- 作成したフォルダに移動して、
npm install --save graphql graphql-tag @apollo/client
を実行しモジュールをインストールする -
npm install --save @vue/apollo-composable
コマンドを実行する。 - main.ts下記のように変更する。
import { createApp, provide, h } from 'vue'
import './style.css'
import App from './App.vue'
import { ApolloClient, createHttpLink, InMemoryCache } from '@apollo/client/core'
import { DefaultApolloClient } from '@vue/apollo-composable'
// HTTP connection to the API
const httpLink = createHttpLink({
// GraphQLの情報を取得できるURLを指定
// 今回はDockerの都合上下記URLを指定
uri: 'http://localhost:8000/graphql',
})
// Cache implementation
const cache = new InMemoryCache()
// Create the apollo client
const apolloClient = new ApolloClient({
link: httpLink,
cache,
})
createApp({
setup () {
provide(DefaultApolloClient, apolloClient)
},
render: () => h(App),
}).mount('#app')
- 情報を取得したいvueファイルのscript内、もしくはcomposableフォルダに下記のようなコードを追加して、情報を取得できるか確認する。
import { useQuery } from '@vue/apollo-composable'
const getVal = async () => {
const {result} = await useQuery(gql`query{
users {
data{
name
}
}
}`)
return result
}
参考資料
https://v4.apollo.vuejs.org/guide-composable/setup.html#_1-install-vue-apollo-composable
https://v4.apollo.vuejs.org/guide-composable/query.html#usequery