From 70fa9caf7a01f3b0edfe191044e5a2c34fdc51c7 Mon Sep 17 00:00:00 2001 From: Supan Adit Pratama Date: Mon, 2 May 2022 21:30:06 +0700 Subject: [PATCH] feat: docker usage for development --- .dockerignore | 9 +++++++ .env.docker | 2 +- .gitignore | 10 ++++---- Dockerfile | 27 ++------------------- PHP.Dockerfile | 16 +++++++++++++ README.md | 54 ++++++++++++++++++++++++++++++++++++++++-- docker-compose.dev.yml | 20 ++++++++++++++++ docker-compose.yml | 6 +++-- 8 files changed, 109 insertions(+), 35 deletions(-) create mode 100644 PHP.Dockerfile create mode 100644 docker-compose.dev.yml diff --git a/.dockerignore b/.dockerignore index b33c3b1..789e9bb 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,14 +1,23 @@ .github/ .idea/ .vscode/ + tests + +docker-compose.dev.yml docker-compose.yml + .dockerignore .editorconfig .gitattributes .gitignore .styleci.yml + +vendor + Dockerfile +PHP.Dockerfile + phpunit.xml README.md diff --git a/.env.docker b/.env.docker index 1f7b486..4308fd2 100755 --- a/.env.docker +++ b/.env.docker @@ -1,5 +1,5 @@ APP_NAME=Laravel -APP_ENV=local +APP_ENV=production APP_KEY= APP_DEBUG=true APP_URL=http://localhost diff --git a/.gitignore b/.gitignore index 2ba020b..1d9e0ee 100755 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,8 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor +node_modules/ +public/hot/ +public/storage/ +storage/*.key/ +vendor/ .env .env.backup .phpunit.result.cache diff --git a/Dockerfile b/Dockerfile index e70e32f..1ea5999 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,22 +2,7 @@ FROM php:7.4-apache RUN apt-get update -# 1. development packages -RUN apt-get install -y \ - git \ - zip \ - curl \ - sudo \ - unzip \ - libicu-dev \ - libzip-dev \ - libbz2-dev \ - libpng-dev \ - libjpeg-dev \ - libmcrypt-dev \ - libreadline-dev \ - libfreetype6-dev \ - g++ +RUN apt-get install -y git zip # Set Apache Root ENV APACHE_DOCUMENT_ROOT=/var/www/html/public @@ -27,15 +12,7 @@ RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf # Enable Some Apache Mod RUN a2enmod rewrite headers -RUN docker-php-ext-install \ - bz2 \ - intl \ - iconv \ - bcmath \ - opcache \ - calendar \ - pdo_mysql \ - zip +RUN docker-php-ext-install pdo pdo_mysql # Composer COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer diff --git a/PHP.Dockerfile b/PHP.Dockerfile new file mode 100644 index 0000000..e8f86e4 --- /dev/null +++ b/PHP.Dockerfile @@ -0,0 +1,16 @@ +FROM php:7.4-cli + +RUN apt-get update + +RUN apt-get install -y git zip + +RUN docker-php-ext-install pdo pdo_mysql + +RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" + +# Composer +COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer + +WORKDIR /short + +CMD [ "php", "artisan","serve" ,"--host","0.0.0.0"] \ No newline at end of file diff --git a/README.md b/README.md index 64ec5ad..11c6b7d 100755 --- a/README.md +++ b/README.md @@ -64,13 +64,13 @@ docker-compose up -d ### Run Migration ```bash -docker-compose exec todo-app php artisan migrate +docker-compose exec short-app php artisan migrate ``` ### Run Seeder ```bash -docker-compose exec todo-app php artisan db:seed +docker-compose exec short-app php artisan db:seed ``` ### Build Docker By Yourself @@ -79,6 +79,56 @@ docker-compose exec todo-app php artisan db:seed docker build . -t supanadit/short-url:1.0.2 ``` +## Development Using Docker + +### Run Application + +```bash +docker-compose -f docker-compose.dev.yml up -d +``` + +### Installing / Updating Dependencies + +```bash +docker-compose -f docker-compose.dev.yml exec -w /srv short composer install # Composer Install +``` + +### Generate Key + +```bash +docker-compose -f docker-compose.dev.yml exec -w /srv short php artisan key:generate # Generate Key +``` + +### Database Migration + +```bash +docker-compose -f docker-compose.dev.yml exec -w /srv short php artisan migrate +``` + +### Database Seed + +```bash +docker-compose -f docker-compose.dev.yml exec -w /srv short php artisan db:seed +``` + +### Shutdown Application + +```bash +docker-compose -f docker-compose.dev.yml down +``` + +### Updating `.env` + +```bash +docker-compose -f docker-compose.dev.yml exec -w /srv short php artisan config:cache +``` + +### Rebuilding Dockerfile + +```bash +docker-compose -f docker-compose.dev.yml build +``` + ### Troubleshooting MySQL Won't Run In Docker Run this script `sudo chown -R 1001:1001 mysql` diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..7264d03 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,20 @@ +version: "3.8" +services: + todo: + build: + context: . + dockerfile: PHP.Dockerfile + ports: + - "8000:8000" + volumes: + - "./:/short" + + mysqldb: + image: "bitnami/mysql:8.0" + ports: + - "3306:3306" + volumes: + - "./mysql:/bitnami/mysql/data" + environment: + - MYSQL_ROOT_PASSWORD=secret + - MYSQL_DATABASE=short \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index c243f53..a39cae8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,8 +10,10 @@ services: - MYSQL_ROOT_PASSWORD=secret - MYSQL_DATABASE=short - todo-app: - image: "supanadit/short-url:1.0.2" + short-app: + build: + context: . + dockerfile: Dockerfile ports: - "80:80" environment: