simple laravel container
This commit is contained in:
19
.env.example
Normal file
19
.env.example
Normal file
@@ -0,0 +1,19 @@
|
||||
# the laravel version to install (empty for latest)
|
||||
LARAVEL_VERSION=
|
||||
|
||||
# weather to run "npm dev run" at boot
|
||||
AUTO_START_NPM_DEV=true
|
||||
|
||||
# external ports
|
||||
FORWARD_LARAVEL_PORT=80
|
||||
FORWARD_VITE_PORT=5173
|
||||
FORWARD_DB_PORT=3306
|
||||
FORWARD_REDIS_PORT=6379
|
||||
FORWARD_MAILPIT_PORT=1025
|
||||
FORWARD_MAILPIT_DASHBOARD_PORT=8025
|
||||
|
||||
# DB settings (this will overwrite the defaults in the laravel project)
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=laravel
|
||||
DB_USERNAME=laravel
|
||||
DB_PASSWORD=password
|
||||
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
.env
|
||||
.env.*
|
||||
!*.env.example
|
||||
|
||||
.idea
|
||||
25
build/Dockerfile
Normal file
25
build/Dockerfile
Normal file
@@ -0,0 +1,25 @@
|
||||
FROM composer:latest
|
||||
|
||||
ARG USERNAME=laravel
|
||||
ARG USER_UID=1000
|
||||
ARG USER_GID=$USER_UID
|
||||
|
||||
RUN apk add --no-cache nodejs npm zlib-dev libpng-dev \
|
||||
&& npm install -g npm \
|
||||
&& rm -rf /tmp/* /var/tmp/*
|
||||
|
||||
RUN docker-php-ext-install mysqli pdo pdo_mysql gd
|
||||
|
||||
RUN addgroup -g $USER_GID -S $USERNAME \
|
||||
&& adduser -u $USER_UID -S $USERNAME -G $USERNAME
|
||||
|
||||
COPY start-container /usr/local/bin/start-container
|
||||
RUN chmod +x /usr/local/bin/start-container
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
WORKDIR /var/www/html
|
||||
|
||||
USER $USERNAME
|
||||
|
||||
ENTRYPOINT ["start-container"]
|
||||
22
build/start-container
Normal file
22
build/start-container
Normal file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# exit when any command fails
|
||||
set -e
|
||||
|
||||
if [ ! -f /var/www/html/artisan ]; then
|
||||
echo "No existing Laravel project found"
|
||||
composer create-project laravel/laravel /var/www/html "$LARAVEL_VERSION"
|
||||
npm install -D tailwindcss postcss autoprefixer --prefix /var/www/html
|
||||
sed -i "/export default defineConfig({/a\ server: {host: '0.0.0.0'}," /var/www/html/vite.config.js
|
||||
echo -e "@tailwind base;\n@tailwind components;\n@tailwind utilities;" >> /var/www/html/resources/css/app.css
|
||||
echo -e '/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n content: [\n "./resources/**/*.blade.php",\n "./resources/**/*.js",\n "./resources/**/*.vue",\n ],\n theme: {\n extend: {},\n },\n plugins: [],\n}' > /var/www/html/tailwind.config.js
|
||||
npx tailwindcss init -p
|
||||
fi
|
||||
|
||||
if [[ "$AUTO_START_NPM_DEV" = true ]]; then
|
||||
echo "Staring npm dev"
|
||||
npm run dev --prefix /var/www/html &
|
||||
fi
|
||||
|
||||
echo "Staring Laravel"
|
||||
php /var/www/html/artisan serve --host=0.0.0.0 --port=8080
|
||||
54
docker-compose.yml
Normal file
54
docker-compose.yml
Normal file
@@ -0,0 +1,54 @@
|
||||
version: '3'
|
||||
services:
|
||||
app:
|
||||
build:
|
||||
context: build
|
||||
dockerfile: Dockerfile
|
||||
image: laravel
|
||||
ports:
|
||||
- '${FORWARD_LARAVEL_PORT:-80}:8080'
|
||||
- '${FORWARD_VITE_PORT:-5173}:5173'
|
||||
environment:
|
||||
LARAVEL_VERSION: '${LARAVEL_VERSION}'
|
||||
AUTO_START_NPM_DEV: '${AUTO_START_NPM_DEV:-false}'
|
||||
DB_HOST: mysql
|
||||
DB_CONNECTION: mysql
|
||||
env_file:
|
||||
.env
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
- mailpit
|
||||
|
||||
mysql:
|
||||
image: 'mysql/mysql-server:8.0'
|
||||
ports:
|
||||
- '${FORWARD_DB_PORT:-3306}:3306'
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
|
||||
MYSQL_ROOT_HOST: '%'
|
||||
MYSQL_DATABASE: '${DB_DATABASE}'
|
||||
MYSQL_USER: '${DB_USERNAME}'
|
||||
MYSQL_PASSWORD: '${DB_PASSWORD}'
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: 1
|
||||
volumes:
|
||||
- 'mysql:/var/lib/mysql'
|
||||
|
||||
redis:
|
||||
image: 'redis:alpine'
|
||||
ports:
|
||||
- '${FORWARD_REDIS_PORT:-6379}:6379'
|
||||
volumes:
|
||||
- 'redis:/data'
|
||||
|
||||
mailpit:
|
||||
image: 'axllent/mailpit:latest'
|
||||
ports:
|
||||
- '${FORWARD_MAILPIT_PORT:-1025}:1025'
|
||||
- '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025'
|
||||
|
||||
volumes:
|
||||
mysql:
|
||||
driver: local
|
||||
redis:
|
||||
driver: local
|
||||
Reference in New Issue
Block a user