diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5d0f124 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +* +!Dockerfile diff --git a/.env.docker.example b/.env.docker.example new file mode 100644 index 0000000..5f98698 --- /dev/null +++ b/.env.docker.example @@ -0,0 +1,39 @@ +APP_NAME=Pollux +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost:8000 + +LOG_CHANNEL=stack + +DB_CONNECTION=mysql +DB_HOST=db +DB_PORT=3306 +DB_DATABASE=pollux +DB_USERNAME=pollux +DB_PASSWORD=secret + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +SESSION_DRIVER=file +SESSION_LIFETIME=120 +QUEUE_DRIVER=sync + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_DRIVER=smtp +MAIL_HOST=smtp.mailtrap.io +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_APP_CLUSTER=mt1 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4dd70ca --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM composer:2.8 AS composer + +FROM php:7.4-cli + +RUN apt-get update \ + && apt-get install -y --no-install-recommends libonig-dev libzip-dev \ + && docker-php-ext-install -j"$(nproc)" mbstring pdo_mysql zip \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=composer /usr/bin/composer /usr/bin/composer + +WORKDIR /var/www diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..475051e --- /dev/null +++ b/compose.yaml @@ -0,0 +1,45 @@ +name: pollux + +services: + app: + build: . + working_dir: /var/www + user: "${UID:-1000}:${GID:-1000}" + environment: + HOME: /tmp + COMPOSER_HOME: /tmp/composer + APP_URL: http://localhost:8000 + DB_CONNECTION: mysql + DB_HOST: db + DB_PORT: "3306" + DB_DATABASE: pollux + DB_USERNAME: pollux + DB_PASSWORD: secret + volumes: + - .:/var/www + ports: + - "8000:8000" + depends_on: + db: + condition: service_healthy + command: php artisan serve --host=0.0.0.0 --port=8000 + + db: + image: mysql:5.7 + environment: + MYSQL_DATABASE: pollux + MYSQL_USER: pollux + MYSQL_PASSWORD: secret + MYSQL_ROOT_PASSWORD: root + volumes: + - mysql-data:/var/lib/mysql + ports: + - "3307:3306" + healthcheck: + test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -proot --silent"] + interval: 5s + timeout: 5s + retries: 20 + +volumes: + mysql-data: