Skip to content

Commit

Permalink
update docker & prettier configurations and composer dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
ruslan-tunelab committed Jan 21, 2024
1 parent a711114 commit 0ffef61
Show file tree
Hide file tree
Showing 98 changed files with 5,685 additions and 2,359 deletions.
19 changes: 19 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
### User-specific stuff:
/.git*
/.idea/workspace.xml
.dockerignore

### Other data
storage/mysql-data
vendor/
bootstrap/cache
!bootstrap/cache/.gitignore
_ide_helper.php

### Vendor bin dependencies
/tools/*/vendor/
.phpunit.result.cache

### Docker
Dockerfile
docker-compose.yml
2 changes: 1 addition & 1 deletion .env.encrypted
Original file line number Diff line number Diff line change
@@ -1 +1 @@
eyJpdiI6Ii9XRzNIWGNtV045NUpFU2pQRUdjY1E9PSIsInZhbHVlIjoiZStUUTdONmEyOW5lSXI2dnRNWngrN3Mrd21ONnB1VTQxNWhraTI2SXBzTWk0Z1p4L1Z3dEZXbnBpL1B1ay8xN1B3WHhWZ3BxblNXdk5XdGJOZlBKTWZIckFWd0pwT0lmL1V5QTFxdTByeHlUT05XRGVjK2UwVjdmN2N6VGVHOExZbjRmc2V1M1JNOXQyVExJYUlMemFiR3pNYTkxOStCd3h5aEJTMDFGcmUxL1FacFh6cVpldDdNQUZjemNjMnlqalM4cEo2ZlJuNkVXRWpSL3dHUk54Nmwram4vSmxFcmpQcEFuZXpCQjNqcmJyOVhaTU1takk4RmxSUER1TGRoWTFRNW96Umt6ZUh1ZjV5ODZ0dEEwMGoyMGVJRTJTRUVYdVhESnYwRlVoWFNPOWh0ckVIcWdPV2RMUzErdmZZQitxSzBIOTlVc1dVY1RqZm9TMFIyZWJ4dFpmL2FIOURXclpUcm1ZaThnN2kwZGFWTmNGZElNRDBycVl2c3J2YjZtWDdtaTRTUFV6ZXpHdlV6UzJrVWtUUzh2VTdxT29RVEZ4cFUxWWZQTVB3WlFDTDVhVkFNVHN0ekVyTGExRDRQTElMTEZUOXdua3dzcFFXNHRnd0FKN0luUGoyU0lkNElFMDhDSzBvK0N6MFlEUGpGQ25xdGlJbVRzdWhqcU13Z3hNcEVVZ2Ywc0NUMkpETTVPUjM3ZmNSbytXc2VXNXJYRnRpV05VWndOYXNxVVZ4RkJ1K0xYUlVLM25zODVhSUt2TzY3TmoveFl2a1lDbk5YTzZXZFkvbGZkaFN6dWV2V1RHbW1iSkhYcWRSODR1OXg1ZTBrZmJCNHF1UVZEaTVadDBKN0x3WDlHTXNrOFdhTEdlOHcxSC9ldDE0UTdvakUxTXhBb3FNVXM5dmJwTGh6eFFZSFVsZURMMm1mZjZJRUlQb1dWZWNlV09KYXEyNUVDcW1KU2lCYk0yMXBpd29oazBzTkNoMUZ5Nll3TWFkM2N6UkJjNjVzSHY0bHVqd3B0K2lTczg5Z1V3R2JDUUcvT20zYXZDRmJUL21nbUV5SUsrcEVON09vNG56eDk2VUg1Y1lMTk9CQi9CN0RvdGJlR2syZzZrWmFGdXJIQUZpbFN1Tk1QZ05wQ3Q0L2ZoK3RRWEdGNVE0SC9HOVdyYzh6VlBoKzM0WHR4QnRnV3hUWG1iTzJZSXVsV2dEU2QxeUU5aTFKMDNkVEhJM2oxZjNFWHcyMkZ1RFVnRHJjeTRXT0RpY3lSUU4vUmI3VWZUcS85eVdLU1pSMEVUbzdWOVRoSFFMWjV2TXROa2hqZDY3Z3JWb0cxaTRBT2l2a2VobDZLUEkwOG1hQ2ZVUHB0L0hHK0I4WTloRmJ6OGtMM0p1WnVNRVN2RVR6L01zVXhyZHUxdDE4RUJpMUY1UVg2bmhqUlZER2MvMjNNcy9laWpJMVJpaXJzRHRlOTk1UElRbWYvVVhjcmNuUEVvd24xT0pQbkVEelRtWGdkTHFCWFJHTWxxbkQ4NTNUanh2b3BPRnVZY2M2Q090ZHBreWJRZTlONkNPYUNFZ0VxNjR1OEFLb2xCODBOUVN4eTF5L2o2SXByL1BldUpjZTIwVUxNWk5lbjZWUlczeU1sUXZBZWdENzV1VTZxMHZmWG1CN29YNFQyZUJKcVZsQjRRcDZmZmQ1Ukswd3JoM0JvU3RWVG1XS283eWE1d0o1MjBBTEhnQjBPdGtzY2djSC8zeGN6UnJzblRhQm1ONFliWDg4UWlXZ25rM0dBdy9ySXhYZDA1WDc5SmkwTVlvbFhxZHdxSFlOa09xZmlteFNNT2drb0pZUHB3cEtJbThQaE41dWd1Vjd3ZlAzTVF2QUtqM3RwNXJXNTFyYklpRklQOVEvblFqV2tuL29TMlZGaDUyZFErVFBFNlZJekhWaWlhcU9TTlEvZERGT0hOTDhkQVBUc3luNDUvVE9nNU04VFdlZ29tVTFGYXBYYTFmT1NYR2RkTkQyUXFBdElXSGJhYzVkb1VERnE5TytxQWJQQlNXblF3Y3ppaEc4a1BtVzNRc2dUS0ZaUnBEb3U1bG1aU1dyWVNkRUdLUDkxcDJEcUlxZnBTV1hjL1MyK2JpT25pa2ttNXZqTUl1cEtaNGhOUURQZDFPOWdMZVBhSEthMlNYa041VXBGRnk3YUluRU83djVQRjFPL0tEV2xNaUtPZGswaElOMElZRVhFRDNHNzFoTFJQaTBxMU0zTU8xYTJ0cXVqOStEUG1lb21wdjZNL0pxUXhWaGw1UEl1MVRlQXVrcDRqNVJ1bnZpTUVwdW9KZkJzOUk4MUx3Z2lQdFh4TzMzL2NZdzFub0ZncWxaNGhBKzU3T2N2d0RZblVyN0xHN3NaZlJSWHZ3YkljTForUnUyT2Z1VndLaDFJZU9uVURFdGhYajVDSGo0QnZ6QUNJTCswdElNcHgwUERwNSs4dGlUZmdkaWpPSFBYdnlFVElTN0ZjUmZkTkttZ2ZkKy9Tc3ZBL1k2NFN0Sjc1Zi9iK05Wc2JPSTYyZitxY3dmVThia0NPU0FiVjEzVWhaaVZYV2FEc0FnbkJ1R1RsRUtDMlQ2TkRBT1d0VWpWTjRlOWNVYmVmMnlJZVcxQktuZTJFWWN3UzBXemcwVjY5SlJtMHhjOFhWaGJKOHhRUFUwZkl5Nm03M2hGTGttbDFtdnBocUYvQm5CWkUxdFBLcXBKZ01rOG5FczdpalNxMDZsRnprYWtrRElsamZEcyt2SnFIZXNRK3dOOGd2SjlTRldKUUpoUkVCTTNtbkxaYkVHMDBZR1Z1Z1pLbkxwWHRqbVRSYXpTNk5PMHk0KytVZGIyT25rVlhhbE1zY3BCamU3bDhlWEQvdE1GZkw2V0tOVUVsRnVzL2pZb0lmMVZkek9pU0RQNjM3M2V6ZlBlNXJkN2ExZDJiOG9FbmN0WE44bEkvMU5nSEhKSXA3Q09EWnlMMStsWGo4ZEJDczh6anZrVFo0Szd0MitHVm9GNEhtUVBPZHRkbG4rZ2VFVnIzMlJ2RzhPd09NUGdGcUxQak1mSUh1cHVLZXBUOGR0TVNuUDFXdmU1Ymt5VUpXdEZXZE1XR1NCOTJJakswOEdxNjVLWWN3YTNRZWNrWmdWT2pTclpGdXNVaWNSS3VXMmdwbUlKT2UxVDZHTVlIT0cxQ29TZTdaRkFsZW5ZNGlCSmxMYnk1ak5yMkxKc0plb1NGdk1ZbEIxUVM0UDdiYUFjRUlFNHJYcUdvc2tpaGc4OGJuVzdHY3QxbTlaZWRNWWFzN0VmbU5NPSIsIm1hYyI6ImMwZWZhZmNiZWEzNjdiMTk5Y2UyYTM0MDkyYTgwNTU0MmQ2MWRlMTE0YTExN2E4M2U5ZTZmNjUzN2RhZWZjYjgiLCJ0YWciOiIifQ==
eyJpdiI6InN2WjA5TWlBVkJkNGMvaEcxOGdJZkE9PSIsInZhbHVlIjoiaXB0TnRCcitZd0RrQjBJaERQUUt1SUFYZFpLTDU3RGpYZDl0YXRDM3F0enFYTEI2dUFnOTJnNHh3NlRDd1FiRysrN3JGbWVhaU1Cdy9VUm5FVC9uNVVUK1poV01uemt3WXdtZXhKSEpvOUl4NlFhcWZmRDZxRG9oRmNrbE5TMFdXM2ZKOW5VMHYzakFIVmJTM2I2aC91ZnlFUmdVRXlMT2pPR2JMd2NIaVpyK3VQdW43bDVEcERxOUdReVZoemQxSU9WQ1IvVkM1U25vTEQzTndyUHowR2RzZnpxcW5xVXF4SStRZnV5ZldPaUd4U0NNWUZ5dlRHL0MzMlcwNFQ0bjJuZUhkS25yYmprczF1SDhwWUZDYmhVTnBoNEtWUmkyOTF2ODBhOURFbm1FN2UzME10Q3hUYXRrbXMyajFRWnJjVDBQb1lsTW56UzhsdlJETVFJb2tIQXJoTGxlQWNTOTU5N3h3YXZ1amR6RkQ1a1NMTHBXblArUDRXMWNyU0Q5VllVZGdwSzZIRlIrM2cxYWJWUE90TmJ3MHQrY3NSbGF4VWZZRlRmd1FQOHFyckNKK3ZqL1RlRnVXYnNidXVvRlF1WjJGT3IyeHhHdHIzRms0VWRBeXM4MDBCVFkwK3BIVUNYVFR2aHlKSGJHRFVTZkR2bithSzg4WllmV1dHWmJHelZXU1VrOWlsRCtGVjFDTTNiUThzTTl0WVRTOEV2K3RsL0pDbzhQRUxsWkRWZkVvQ1J4VVdER05zVTZVbUd6aHhBUDdCWWpMU1EwZ0h6eGdwSzBwZTh4UmdicG9ZejJMVGZ0M0cxRitCVTBlOVRzTC9oYmc3ZFRpZVpDWDh2REM2c0FsQmRxWlE1Ty9TenRScTFFSU1kOHpIbGVkKzdubG5neXZjNFZKRm5jMkpubDBDbUpDNmZVeDJUQmZvbERkV05FdDFEbk9HTW1FYlNIY1lLMWswbmUxVnIvNk9VeTVuTnBuWGdHMVoxL3NObWxKNlBJNTVGRndWRFloMVRtZ0swdDFBaDRuL3pNNjlVeWpCTGNncC92dTVpNjltMml4Z0JBUnNPSyt6eW53YzNKL24zT3VOMG1xRnVYUkppMnNaWjJST3lydFdCR0hQbVVJYUxhVkxYL2tTYlorQjBldEZnUjNSOExGWlU3WTFxekc4bDBYYUhnWEJ6dlVLTlZOSnZHcXFWS3hDS2V1dFZmU2VKaUc5T1hQdFRVUmdjUE1WMCt0VHBIc0pDS1ZYekJSYkp3ZEg3WEFyWm5oTEJhQnFFS2FrNXRjemlRZkVmNDI2aGQ5aUFWQS9QcjlwQ2VIV0R4aEJjcklaQlBVbktoWWdJY0pMMzg5dXV0VmZjUzVlU20yVVZsdG40NWltQS9VYVNJeGZ0b3d1MG85OHRsS0RCQVFwZDJLVXhMZ0JFWmlydTk3dGtGSmRVZWQxV3pWTWllVlBCajNTOXc1Q1JqbFBkK3FSTEs4aTdjdnhFZXJYeGt1TzFtTmZVdXhrUit3WHNwK09EcnJPeEFUdVhNb1FrWXFvVi83dFFGTlNJTzNuYlVkYnJsR0R6YzJRVW05TXpyMjBCWXJLQTdnK2pISnJaaFFSTFgyUHJ3VXFFdWVRRGltMzFIaHN3VDJFWWtUR0lJY2t4eG1ySFF4UmtidVpoSmxZYldUQWVQRUNDSXpYazFGWFBwcE1SM0dkblB0bXdHVzRuSmtjb3BOVWVMdlNsSEljNUVIUm54ajdmaVBpdjIya3p2R2hNVWxka3BlNVZIemdHK2pkWGJabHMzTGViTnVZTGg5cU8rSVdQSC9aNVY2ZDBhNTVFS0hSYU5na3ZsZlExZUkzS3MyaUE2OTl1T0ZNaEV1SUlkQktWa1ZLTzZDTXZqbXdQSUZsUUxQb0JiTk5WL015aGNSeURMZ2lUeW4yMjRmK29xbzRubDdTMlJaS0RzbEZCVEsvMW9iTDBvRXpEWHRCSkFPN1J1c1RFSmlvWDduVFRHc3kwVHJ1bXJSNlg0cm41eE52TWxlbVNqQkJpcGJhVTIzUzZWWTJLZWpNWFZpUXdJL21qRU5VUEF2YWlWTHo3QkZzVE9yMW4wUTdrbUtpdWlhbVpSWGIvWVJqSTZrRFZIZWhyVjhGcXVvZy9xUGRad3hVZlpRR0JyUmZ0RlpzNGdQYjdRcnNZeE1OdHBzdEcvSzYvWGh4S2VadVJ5dllwaXNXeUFRNFVwM1NLVk1Zd2xIZHZuWGZDd2xLWjMvMlQ2eU9xcWtNWTlFbm5QSVVpT2lCMS9YQ0krem9kOGJtZGxTSXV5d0ZGOFhkQXB6UXR1WHI1dytoUHBldWt5TTk4OFlkTlZCVG1SdnhSNGpZei96S3BYNkFaM29YUlBQTEttOVlYa3VkUFJURzhIZWEzYUdiRU1pVnVKTUpObWptZE0rYXlEL2NhdUR3QlZVRHVhazRzVVordUI1S2lVSzhuVHBFT3NLQzBXaERUMzY0M3RqWjNqdWlkZXhITDd4ODF3aUNzRTFSSWMrMEdXclNMOUtxTDlUQUUyTm01SkVqZXRGNm43WERMVGtsa2F5WlQrbnBzRVVlOGo2RHhxUWVWRHpTRTlodEdrWStVdUhBbkhLaWRxYVV5OENuRW96QlhHemtQQkxPbGVTRFF1OXY0QUQvWmlVV2xzZ01qc29Wd284ZW9tbGVTU3BpeUFIdysrMndHRDc3R0QyYU41a2FKRVlYNG1RTlBNR3JMTHU3YzVsZW5RQ0RWcHAyK21rS1Y2ZTkyRDRNNTlFK3dITzBzTW9aZDkvblNKc2puSjRVTTFwOFpScnl1VHEzU1IxQmdZTHV2Z0tlYXFnNW9NZXY1U3U1SGVIVGcvc3JOVHdVWjlOdHA0cDZCQmIvTHBYWXBEQ0NoZmhibHhVQmlBZ2pkUGgrNXdlYVVHL2lvbndoUnJsc3BucVNranlvRm43c3dxZEZTVlJ3TUtxWFQxRnpLMVdpMjRUeHVWZmVwZHFPQzg0bU1FTWFhN2g5c3pYWXRIYlo0aFNycnhCTmZLeXdjK1lDOXVtdlFWZmZWd082bVZpMVBSeHladjlaN2N6QmpTOTlpWlhHdVIxV3gwV2hleXNPdmtTNU56RmhqL3B1V2F0YUg5ajdtck1TdEZndmhBK0NlYm9WOVQybmIwU2RsNWRzcE9QamNaRDRoY2xOOWNhRCtQWlRaamExSHpsTlYrRzhobHY5cTFBeVhJUTZjL3hndHd3aUlNQlZVVG80c0s5OEJBRXo3ZzJPWElCU04wSEE5b1YxdkhPbXlSbFZLQkgxdkZrTXFZVGRSdmtOREtVUXFZSXQ1N1pGRFBDeEQxMWg2cEZHcE9FUDE1VnNCNFJJYjdnckJwVnlSL3BDRnBhRTRqTUplZWY3cnByNlhIUDk0VWZtdUkxczVCSXd1Rk9EMGo4V1pWUGJLc1pXNjkzNUtPY3NNODZMWXUzbk5UbGRuN3Bld3lock83STFDQVoxMGdmcnZpMUpKaHZuZU5HYTZKU2tmYXA0WGlxcGNrUnhveXBtRHcyTGtqK29JaEkyeHpaYU1IMmFpemc3endTVTVMZEFMMnNHbnc3V09CeXZmc0NrVXVocmxlcE0vR0pLalBBM2c1b3A5aVcyd0JZS0o3WWZIWjd0R0MyekJ4RU85U2xuS1Y4R1gzYlRMZVFiT3lLUXdkcDd4THNHVXFuUW9iV2R3dC9kZDBRU05hQmF0dlR6OFFIclVhakRkSTU3cmN6a2s1cnVhYjMwYVlSOG9ydEZza1prVzZUSXZHSVRWU3gwMDBQcEZRN1hrcDZBcmowRnE4V0NwdUVqczdqVFFHYUR5c1k3cTVWcndQcWZ5Y2dZWnJMSUJzTlhhVWhGeDZwdVlzYWhuSHJQYmp6Z09vc0dOdWorU3YvYXJhT1kwTXNCeVFhRThPUEJ0RDA1cVlBVmpuakY5VHJjR0VsSWhBdGM4QmtJbXU5SEQvKy9WR3JRVjBMcFZoSDdmRE1Wb0htcTBBeVNtQlZTUXlMZGlXai94Uy8va00ya04yMm5pNUM0Q29SYzkxV2FFaFhJRXIrczdlMVR4Ykw1VWU4T2pPdjBBTDY3QzJrc2NobGlxamF3YmN2eEd2N05ublNRbXV4aWtWS2ZEeGhpZ1ZhV1VwMGVWRVBvK2liKzErdUVTdyIsIm1hYyI6IjJmNWZmZDAzMTFmZjFkMTlkYTgyZjNlYTU3MzBjMzJmMTg1YWMzMWE4YzVjZGQ3ODczMDA0YTU4MWUzNWE5MjMiLCJ0YWciOiIifQ==
23 changes: 17 additions & 6 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,28 @@ APP_NAME="brandford."
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://brandford.local.io
APP_URL=http://laravel.store

# Docker Configuration
# XDEBUG_CONFIG possible values: main|osx. Use main value for Linux and Windows, osx value for MacOS.
XDEBUG_CONFIG=main
CONTAINER_NAME=store

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=database
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=brandford
DB_USERNAME=root
DB_PASSWORD=root

BROADCAST_DRIVER=log
CACHE_DRIVER=file
CACHE_DRIVER=redis
FILESYSTEM_DISK=public
QUEUE_CONNECTION=sync
QUEUE_CONNECTION=redis
SESSION_DRIVER=file
SESSION_LIFETIME=120

Expand All @@ -29,8 +34,8 @@ REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=
MAIL_PORT=
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=tls
Expand Down Expand Up @@ -71,3 +76,9 @@ CSC_API_KEY=
STRIPE_KEY=
STRIPE_SECRET=
STRIPE_WEBHOOK_SECRET=

GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=

GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
108 changes: 54 additions & 54 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,60 +1,60 @@
name: Build project

env:
'DB_DATABASE': 'brandford'
'DB_USERNAME': 'root'
'DB_PASSWORD': 'root'
'DB_DATABASE': 'brandford'
'DB_USERNAME': 'root'
'DB_PASSWORD': 'root'
on:
push:
branches: ['main']
push:
branches: ['main']

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Clone the repository
uses: actions/checkout@v3

- name: Setup php
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
extensions: mbstring, ctype, fileinfo, openssl, PDO, bcmath, json, tokenizer, xml

- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 18

- name: Setup mysql
uses: mirromutth/mysql-action@v1.1
with:
mysql database: ${{ env.DB_DATABASE }}
mysql root password: ${{ env.DB_USERNAME }}

- name: Install composer dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist

- name: Install npm dependencies
run: npm ci

- name: Decrypt .env
run: php artisan env:decrypt --key=${{ secrets.ENV_KEY }}

- name: Run artisan commands & build npm assets
run: |
php artisan optimize:clear
php artisan key:generate
php artisan migrate:fresh --seed
npm run build
- name: Setup directory permissions
run: chmod -R 755 storage bootstrap/cache

- name: Run Unit tests
env:
APP_ENV: testing
DB_CONNECTION: mysql
DB_DATABASE: ${{ env.DB_DATABASE }}
DB_USERNAME: ${{ env.DB_USERNAME }}
DB_PASSWORD: ${{ env.DB_PASSWORD }}
run: php artisan test
build:
runs-on: ubuntu-latest
steps:
- name: Clone the repository
uses: actions/checkout@v3

- name: Setup php
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
extensions: mbstring, ctype, fileinfo, openssl, PDO, bcmath, json, tokenizer, xml

- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 18

- name: Setup mysql
uses: mirromutth/mysql-action@v1.1
with:
mysql database: ${{ env.DB_DATABASE }}
mysql root password: ${{ env.DB_USERNAME }}

- name: Install composer dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist

- name: Install npm dependencies
run: npm ci

- name: Decrypt .env
run: php artisan env:decrypt --key=${{ secrets.ENV_KEY }}

- name: Run artisan commands & build npm assets
run: |
php artisan optimize:clear
php artisan key:generate
php artisan migrate:fresh --seed
npm run build
- name: Setup directory permissions
run: chmod -R 755 storage bootstrap/cache

- name: Run Unit tests
env:
APP_ENV: testing
DB_CONNECTION: mysql
DB_DATABASE: ${{ env.DB_DATABASE }}
DB_USERNAME: ${{ env.DB_USERNAME }}
DB_PASSWORD: ${{ env.DB_PASSWORD }}
run: php artisan test
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,9 @@ yarn-error.log
/.fleet
/.idea
/.vscode

### Generated by Docker
/storage/mysql-data

### Generated by Filament Shield
/app/Policies
/docker/mysql
8 changes: 5 additions & 3 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
{
"printWidth": 120,
"$schema": "https://json.schemastore.org/prettierrc",
"semi": false,
"tabWidth": 4,
"singleQuote": true,
"trailingComma": "all",
"arrowParens": "always",
"printWidth": 140,
"trailingComma": "none",
"plugins": ["prettier-plugin-tailwindcss"]
}
96 changes: 96 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
FROM php:8.2-fpm

# set main params
ARG BUILD_ARGUMENT_ENV=dev
ENV ENV=$BUILD_ARGUMENT_ENV
ENV APP_HOME /var/www
ARG HOST_UID=1000
ARG HOST_GID=1000
ENV USERNAME=www-data
ARG INSIDE_DOCKER_CONTAINER=1
ENV INSIDE_DOCKER_CONTAINER=$INSIDE_DOCKER_CONTAINER
ARG XDEBUG_CONFIG=main
ENV XDEBUG_CONFIG=$XDEBUG_CONFIG

# check environment
RUN if [ "$BUILD_ARGUMENT_ENV" = "default" ]; then echo "Set BUILD_ARGUMENT_ENV in docker build-args like --build-arg BUILD_ARGUMENT_ENV=dev" && exit 2; \
elif [ "$BUILD_ARGUMENT_ENV" = "dev" ]; then echo "Building development environment."; \
elif [ "$BUILD_ARGUMENT_ENV" = "test" ]; then echo "Building test environment."; \
elif [ "$BUILD_ARGUMENT_ENV" = "staging" ]; then echo "Building staging environment."; \
elif [ "$BUILD_ARGUMENT_ENV" = "prod" ]; then echo "Building production environment."; \
else echo "Set correct BUILD_ARGUMENT_ENV in docker build-args like --build-arg BUILD_ARGUMENT_ENV=dev. Available choices are dev,test,staging,prod." && exit 2; \
fi

# install all the dependencies and enable PHP modules
RUN apt-get update && apt-get upgrade -y && apt-get install -y \
procps \
nano \
git \
unzip \
libicu-dev \
zlib1g-dev \
libxml2 \
libxml2-dev \
libreadline-dev \
supervisor \
cron \
sudo \
libzip-dev \
&& docker-php-ext-configure pdo_mysql --with-pdo-mysql=mysqlnd \
&& docker-php-ext-configure intl \
&& docker-php-ext-install \
pdo_mysql \
sockets \
intl \
opcache \
zip \
exif \
pcntl \
bcmath \
&& rm -rf /tmp/* \
&& rm -rf /var/list/apt/* \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean

# create document root, fix permissions for www-data user and change owner to www-data
RUN mkdir -p $APP_HOME/public && \
mkdir -p /home/$USERNAME && chown $USERNAME:$USERNAME /home/$USERNAME \
&& usermod -o -u $HOST_UID $USERNAME -d /home/$USERNAME \
&& groupmod -o -g $HOST_GID $USERNAME \
&& chown -R ${USERNAME}:${USERNAME} $APP_HOME

# put php config for Laravel
COPY ./docker/$BUILD_ARGUMENT_ENV/www.conf /usr/local/etc/php-fpm.d/www.conf
COPY ./docker/$BUILD_ARGUMENT_ENV/php.ini /usr/local/etc/php/php.ini

# install Xdebug in case dev/test environment
COPY ./docker/general/do_we_need_xdebug.sh /tmp/
COPY ./docker/dev/xdebug-${XDEBUG_CONFIG}.ini /tmp/xdebug.ini
RUN chmod u+x /tmp/do_we_need_xdebug.sh && /tmp/do_we_need_xdebug.sh

# install composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN chmod +x /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1

# add supervisor
RUN mkdir -p /var/log/supervisor
COPY --chown=root:root ./docker/general/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY --chown=root:crontab ./docker/general/cron /var/spool/cron/crontabs/root
RUN chmod 0600 /var/spool/cron/crontabs/root

# set working directory
WORKDIR $APP_HOME

USER ${USERNAME}

# copy source files and config file
COPY --chown=${USERNAME}:${USERNAME} . $APP_HOME/
COPY --chown=${USERNAME}:${USERNAME} .env $APP_HOME/.env

# install all PHP dependencies
RUN if [ "$BUILD_ARGUMENT_ENV" = "dev" ] || [ "$BUILD_ARGUMENT_ENV" = "test" ]; then COMPOSER_MEMORY_LIMIT=-1 composer install --optimize-autoloader --no-interaction --no-progress; \
else COMPOSER_MEMORY_LIMIT=-1 composer install --optimize-autoloader --no-interaction --no-progress --no-dev; \
fi

USER root
Loading

0 comments on commit 0ffef61

Please sign in to comment.