Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker でアプリケーションを起動できるようにする #100

Merged
merged 2 commits into from
Nov 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions api/.env.example
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
44 changes: 44 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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"
28 changes: 28 additions & 0 deletions docker/api/Dockerfile
Original file line number Diff line number Diff line change
@@ -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"]
10 changes: 10 additions & 0 deletions docker/api/php.ini
Original file line number Diff line number Diff line change
@@ -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
5 changes: 5 additions & 0 deletions docker/api/start.sh
Original file line number Diff line number Diff line change
@@ -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
6 changes: 6 additions & 0 deletions docker/client/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FROM node:16.13.1-alpine

WORKDIR /usr/src/app

ENV LANG=C.UTF-8
ENV TZ =Asia/Tokyo
Empty file added docker/database/my.conf
Empty file.
2 changes: 2 additions & 0 deletions docker/mysql/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!.gitignore
39 changes: 25 additions & 14 deletions docs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,22 +53,12 @@

## 開発環境構築

### レポジトリのフォーク

https://github.com/chorkleines/kleines-mypage をフォークしてください。

### レポジトリのクローン

フォークしたレポジトリをクローンします。

```sh
git clone git@github.com:<your-user-name>/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)
Expand Down Expand Up @@ -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 を立てずに提出しても問題ありません。
Expand Down