From 80be96d25bcbf0f1f937069d558bf1b8cde086e2 Mon Sep 17 00:00:00 2001 From: Nozomu Yamazaki <46639706+nozomu-y@users.noreply.github.com> Date: Sat, 11 Nov 2023 19:14:26 +0900 Subject: [PATCH 1/2] feat: run the whole application on docker --- api/.env.example | 16 ++++++++------- docker-compose.yml | 44 ++++++++++++++++++++++++++++++++++++++++ docker/api/Dockerfile | 28 +++++++++++++++++++++++++ docker/api/php.ini | 10 +++++++++ docker/api/start.sh | 5 +++++ docker/client/Dockerfile | 6 ++++++ docker/database/my.conf | 0 docker/mysql/.gitignore | 2 ++ 8 files changed, 104 insertions(+), 7 deletions(-) create mode 100644 docker-compose.yml create mode 100644 docker/api/Dockerfile create mode 100644 docker/api/php.ini create mode 100644 docker/api/start.sh create mode 100644 docker/client/Dockerfile create mode 100644 docker/database/my.conf create mode 100644 docker/mysql/.gitignore diff --git a/api/.env.example b/api/.env.example index a624a34..a21a21e 100644 --- a/api/.env.example +++ b/api/.env.example @@ -1,20 +1,20 @@ -APP_NAME=Laravel +APP_NAME="Kleines Mypage" APP_ENV=local APP_KEY= APP_DEBUG=true -APP_URL=http://localhost -NUXT_URL=http://localhost +APP_URL=http://localhost:8000 +NUXT_URL=http://localhost:3000 LOG_CHANNEL=stack LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug DB_CONNECTION=mysql -DB_HOST=127.0.0.1 +DB_HOST=database DB_PORT=3306 -DB_DATABASE=laravel -DB_USERNAME=root -DB_PASSWORD= +DB_DATABASE=kleines_mypage +DB_USERNAME=user +DB_PASSWORD=password BROADCAST_DRIVER=log CACHE_DRIVER=file @@ -57,3 +57,5 @@ VITE_PUSHER_HOST="${PUSHER_HOST}" VITE_PUSHER_PORT="${PUSHER_PORT}" VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +L5_SWAGGER_GENERATE_ALWAYS=true diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fdf4f4d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,44 @@ +version: "3.8" +services: + api: + build: + context: ./ + dockerfile: ./docker/api/Dockerfile + container_name: api + volumes: + - ./api:/var/www/html + ports: + - "8000:8000" + depends_on: + - database + links: + - database + client: + build: ./docker/client + container_name: client + environment: + - NODE_ENV=development + - HOST=0.0.0.0 + - CHOKIDAR_USEPOLLING=true + volumes: + - ./client:/usr/src/app + command: sh -c 'npm install && npm run dev' + ports: + - "3000:3000" + depends_on: + - api + - database + database: + image: mysql:8.0 + container_name: mysql + volumes: + - ./docker/mysql:/var/lib/mysql + - ./docker/database/my.conf:/etc/mysql/conf.d/my.conf + environment: + - MYSQL_ROOT_PASSWORD=root + - MYSQL_DATABASE=kleines_mypage + - MYSQL_USER=user + - MYSQL_PASSWORD=password + - MYSQL_ROOT_PASSWORD=password + ports: + - "3306:3306" diff --git a/docker/api/Dockerfile b/docker/api/Dockerfile new file mode 100644 index 0000000..f11b69a --- /dev/null +++ b/docker/api/Dockerfile @@ -0,0 +1,28 @@ +FROM php:8.0.30-fpm-alpine + +COPY --from=composer:2.5.5 /usr/bin/composer /usr/bin/composer +COPY docker/api/php.ini /usr/local/etc/php/ + +WORKDIR /var/www/html + +RUN apk --no-cache update && \ + apk --no-cache upgrade && \ + apk --no-cache add \ + freetype-dev libjpeg-turbo-dev libpng-dev libxml2-dev \ + git vim unzip tzdata \ + zlib-dev pcre-dev curl-dev oniguruma-dev \ + && docker-php-ext-install pdo_mysql mysqli mbstring gd \ + && docker-php-ext-enable mysqli \ + && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \ + && apk del tzdata \ + && rm -rf /var/cache/apk/* + +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + +ENV TZ=Asia/Tokyo + +EXPOSE 8000 + +COPY docker/api/start.sh /var/www/ +RUN chmod +x /var/www/start.sh +CMD ["../start.sh"] diff --git a/docker/api/php.ini b/docker/api/php.ini new file mode 100644 index 0000000..29fd31e --- /dev/null +++ b/docker/api/php.ini @@ -0,0 +1,10 @@ +[PHP] +post_max_size = 100M +upload_max_filesize = 100M +[Date] +date.timezone = "Asia/Tokyo" +[mbstring] +mbstring.internal_encoding = "UTF-8" +mbstring.language = "Japanese" + +extension=redis.so diff --git a/docker/api/start.sh b/docker/api/start.sh new file mode 100644 index 0000000..fd7bf75 --- /dev/null +++ b/docker/api/start.sh @@ -0,0 +1,5 @@ +composer install +php artisan key:generate +php artisan migrate +php artisan db:seed +php artisan serve --host 0.0.0.0 diff --git a/docker/client/Dockerfile b/docker/client/Dockerfile new file mode 100644 index 0000000..462f234 --- /dev/null +++ b/docker/client/Dockerfile @@ -0,0 +1,6 @@ +FROM node:16.13.1-alpine + +WORKDIR /usr/src/app + +ENV LANG=C.UTF-8 +ENV TZ =Asia/Tokyo diff --git a/docker/database/my.conf b/docker/database/my.conf new file mode 100644 index 0000000..e69de29 diff --git a/docker/mysql/.gitignore b/docker/mysql/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/docker/mysql/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore From bd39d4ef90694f6c50d0f69dd9001bbc3a780170 Mon Sep 17 00:00:00 2001 From: Nozomu Yamazaki <46639706+nozomu-y@users.noreply.github.com> Date: Sat, 11 Nov 2023 23:26:55 +0900 Subject: [PATCH 2/2] Update CONTRIBUTING.md --- docs/CONTRIBUTING.md | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 79c099b..46a1010 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -53,22 +53,12 @@ ## 開発環境構築 -### レポジトリのフォーク - -https://github.com/chorkleines/kleines-mypage をフォークしてください。 - ### レポジトリのクローン -フォークしたレポジトリをクローンします。 - -```sh -git clone git@github.com:/kleines-mypage.git -``` - -リモートに大元のレポジトリを追加します。 +レポジトリをクローンします。 ```sh -git remote add upstream git@github.com:chorkleines/kleines-mypage.git +git clone git@github.com:chorkleines/kleines-mypage.git ``` ### API (Laravel) @@ -177,12 +167,33 @@ npm run dev 無事ログインができたら開発環境構築は完了です! +### Docker を使う方法 + +[Docker](https://www.docker.com) を利用した環境構築の方法も記しておきます。 +この方法はアプリケーションを実行する上では使いやすいですが、開発時の利用はお勧めしません。 +[Docker Desktop](https://www.docker.com/products/docker-desktop/) をダウンロードしてインストールしてください。 + +#### アプリケーションの起動 + +以下のコマンドを実行して API サーバー・クライアントを起動します。 + +```sh +docker-compose up -d --build +``` + +デフォルトでは以下のユーザーが作成されています。 + +> Email: admin@chorkleines.com +> Password: password + +http://localhost:3000 にアクセスして上記のユーザーでログインしてください。 +無事ログインができたら開発環境構築は完了です! + ## Pull Request コードを修正する場合は Pull Request (PR) を作成してください。 -PR を作成する際には、[chorkleines/kleines-mypage](https://github.com/chorkleines/kleines-mypage) に大量のブランチが生成されることを防止するために、フォーク先のレポジトリから作成して下さい。 -また原則として、PR を merge する前に他のメンバーから approve をもらってください。 +PR を merge する前には、原則として PR を merge する前に他のメンバーから approve をもらってください。 そのため、Reviewer にメンバーを誰か指定してください。Assignees には自分を指定し、Labels は適切なものを選択してください。 細かい PR は Issue を立てずに提出しても問題ありません。