From b145619e3ab3b972eb81d08cb9b61e8dc0739a19 Mon Sep 17 00:00:00 2001 From: hanshino Date: Sat, 16 Apr 2022 18:36:08 +0000 Subject: [PATCH 1/3] =?UTF-8?q?=E5=BB=BA=E7=BD=AE=E8=99=9B=E6=93=AC?= =?UTF-8?q?=E7=92=B0=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 1 + Dockerfile | 21 +++++++++++++++ docker-compose.yml | 48 ++++++++++++++++++++++++++++++++++ docker/conf/nginx_default.conf | 17 ++++++++++++ 4 files changed, 87 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 docker/conf/nginx_default.conf diff --git a/.env.example b/.env.example index 56ea5c84..f662ddc1 100644 --- a/.env.example +++ b/.env.example @@ -5,6 +5,7 @@ APP_NAME="純靠北工程師" APP_ENV="local" #"local"、"production" APP_KEY= APP_URL="https://init.engineer" +APP_PORT="80" # |-------------------------------------------------------------------------- diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..7d76a228 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +FROM php:8.0.2-fpm + +RUN apt-get update && apt-get install -y libmcrypt-dev \ + mariadb-client libmagickwand-dev libpng-dev \ + libonig-dev libzip-dev zip libpng-dev libjpeg-dev \ + libfreetype6-dev --no-install-recommends \ + && docker-php-ext-configure gd --with-freetype --with-jpeg \ + && pecl install imagick mcrypt \ + && docker-php-ext-enable imagick mcrypt \ + && docker-php-ext-install zip pdo_mysql mbstring gd \ + && rm -rf /var/lib/apt/lists/* + +ENTRYPOINT ["docker-php-entrypoint"] + +WORKDIR /var/www/html + +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + +EXPOSE 8000 + +CMD ["php-fpm"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..9b5ef5ec --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,48 @@ +version: '3.8' +services: + + nginx: + image: nginx:stable-alpine + restart: always + links: + - app + ports: + - "${APP_PORT}:80" + depends_on: + - app + volumes: + - ./docker/conf/nginx_default.conf:/etc/nginx/conf.d/default.conf + - ./storage/app/public:/usr/share/nginx/html/storage + + app: + build: + context: ./ + dockerfile: Dockerfile + volumes: + - ./:/var/www/html + command: bash -c "php artisan serve --host=0.0.0.0 --port=8000" + + mysql: + image: mysql:5.7 + ports: + - "3306:3306" + environment: + MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} + MYSQL_DATABASE: ${DB_DATABASE} + MYSQL_USER: ${DB_USERNAME} + MYSQL_PASSWORD: ${DB_PASSWORD} + volumes: + - mysql_data:/var/lib/mysql + + redis: + image: redis + ports: + - "6379:6379" + environment: + REDIS_PASSWORD: ${REDIS_PASSWORD} + volumes: + - redis_data:/data + +volumes: + mysql_data: + redis_data: diff --git a/docker/conf/nginx_default.conf b/docker/conf/nginx_default.conf new file mode 100644 index 00000000..d1e306db --- /dev/null +++ b/docker/conf/nginx_default.conf @@ -0,0 +1,17 @@ +server { + listen 80; + server_name _; + + location /storage/cards/images/ { + autoindex on; + root /usr/share/nginx/html; + } + + location / { + proxy_pass http://app:8000; + proxy_set_header X-Real-Ip $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $host; + } +} From f8255db6f4885dfa36a10983e468af27ce59510d Mon Sep 17 00:00:00 2001 From: hanshino Date: Sat, 16 Apr 2022 18:36:08 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=9B=B8=E4=BE=9D?= =?UTF-8?q?=E5=A5=97=E4=BB=B6=E5=AE=89=E8=A3=9D=E8=85=B3=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 6 +++--- scripts/setup.sh | 13 +++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 scripts/setup.sh diff --git a/Dockerfile b/Dockerfile index 7d76a228..07d6417b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,12 @@ -FROM php:8.0.2-fpm +FROM php:8.1.4-fpm RUN apt-get update && apt-get install -y libmcrypt-dev \ mariadb-client libmagickwand-dev libpng-dev \ libonig-dev libzip-dev zip libpng-dev libjpeg-dev \ libfreetype6-dev --no-install-recommends \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ - && pecl install imagick mcrypt \ - && docker-php-ext-enable imagick mcrypt \ + && pecl install imagick \ + && docker-php-ext-enable imagick \ && docker-php-ext-install zip pdo_mysql mbstring gd \ && rm -rf /var/lib/apt/lists/* diff --git a/scripts/setup.sh b/scripts/setup.sh new file mode 100644 index 00000000..2d335eba --- /dev/null +++ b/scripts/setup.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +# 透過 image composer 進行 composer install +echo "" +echo "Setup composer and install dependencies" +echo "" +docker run --rm -v `pwd`:/app --workdir /app composer composer install + +# 透過 image node 進行 npm install +echo "" +echo "Setup npm and install dependencies" +echo "" +docker run --rm -v `pwd`:/app --workdir /app node:lts npm install && npm run prod From e61a3e717fb88efc221d6bdfe0fcf488265e3faf Mon Sep 17 00:00:00 2001 From: hanshino Date: Sun, 17 Apr 2022 03:27:10 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B0=88=E6=A1=88?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E8=85=B3=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/init.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 scripts/init.sh diff --git a/scripts/init.sh b/scripts/init.sh new file mode 100644 index 00000000..7c86c1e7 --- /dev/null +++ b/scripts/init.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# 此腳本用於初次架設需進行的 Laravel 專案設定 +# 請先確保已透過 docker-compose up -d 建立好所有的 docker container + +echo "" +echo "key generate" +echo "" +docker-compose exec app php artisan key:generate + +echo "" +echo "migrate" +echo "" +docker-compose exec app php artisan migrate