├── .env ├── .github └── workflows │ ├── Daily-checklist.yml │ ├── docker-image.yml │ └── image-test.txt ├── .gitignore ├── CHANGELOG.md ├── README.md ├── default.png ├── docker-compose.yml ├── laravel ├── apache │ ├── Dockerfile-7.4 │ ├── Dockerfile-8.0 │ ├── Dockerfile-8.1 │ ├── Dockerfile-8.2 │ ├── Dockerfile-8.3 │ ├── docker-entrypoint.sh │ ├── httpd.conf │ ├── package.sh │ └── php.ini └── nginx │ ├── Dockerfile-7.4 │ ├── Dockerfile-8.0 │ ├── Dockerfile-8.1 │ ├── Dockerfile-8.2 │ ├── Dockerfile-8.3 │ ├── default.conf │ ├── docker-entrypoint.sh │ ├── nginx.conf │ ├── package.sh │ ├── php.ini │ └── www.conf └── settings.yml /.env: -------------------------------------------------------------------------------- 1 | SERVER_ROOT=/var/www/public 2 | APP_CODE_PATH_HOST=/tmp/laravel 3 | APP_CODE_CONTAINER_FLAG=:cached 4 | APP_CODE_PATH_LARAVEL=/var/www 5 | PHP_VERSION=7.4 6 | LARAVEL_HOST_HTTP_PORT=53487 7 | DISPLAY_PHPERROR=true 8 | XDEBUG=false 9 | LARAVEL_VERSION=8 10 | BACK_END=nginx 11 | INSTALL_ADDITIONAL_EXTENSIONS= 12 | USER_ID=1000 13 | GROUP_ID=1000 -------------------------------------------------------------------------------- /.github/workflows/Daily-checklist.yml: -------------------------------------------------------------------------------- 1 | name: Laravel 2 | 3 | on: 4 | schedule: 5 | - cron: '30 21 * * *' 6 | push: 7 | branches: [ master ] 8 | pull_request: 9 | branches: [ master ] 10 | 11 | jobs: 12 | PHP74Laravel-AMD64: 13 | strategy: 14 | matrix: 15 | BACK_END: ["nginx", "apache"] 16 | laraversion: ["7", "8"] 17 | runs-on: ubuntu-latest 18 | steps: 19 | - uses: actions/checkout@v2 20 | - name: Docker composer installation 21 | run: | 22 | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 23 | chmod +x /usr/local/bin/docker-compose 24 | - name: Build the Docker image ${{ matrix.BACK_END }}, php 7 and laravel ${{ matrix.laraversion }} 25 | run: docker-compose -f "docker-compose.yml" up -d --build 26 | env: 27 | PHP_VERSION: "7.4" 28 | LARAVEL_VERSION: ${{ matrix.laraversion }} 29 | BACK_END: ${{ matrix.BACK_END }} 30 | XDEBUG: true 31 | DISPLAY_PHPERROR: true 32 | SERVER_ROOT: /var/www/public 33 | APP_CODE_PATH_HOST: /tmp/lara 34 | - name: Build the Docker image mariadb 35 | run: docker run --detach --name mariadb --network=laravel_default -p 3306:3306 --env MARIADB_DATABASE=test --env MARIADB_USER=test --env MARIADB_PASSWORD=test --env MARIADB_ROOT_PASSWORD=password ghcr.io/deck-app/mariadb:10.7 36 | - name: Build the Docker image Mongodb 37 | run: docker run --detach --name mongo --network=laravel_default -p 27017:27017 mongo:latest 38 | - name: PHP version check 39 | run: docker exec laravel_laravel_1 php -v 40 | - name: Mongodb driver check 41 | run: docker exec laravel_laravel_1 php -m | grep mongo 42 | - name: Mysql Driver check 43 | run: docker exec laravel_laravel_1 php -m | grep mysqli 44 | - name: Git Version check 45 | run: docker exec laravel_laravel_1 git --version 46 | - name: Curl Version check 47 | run: docker exec laravel_laravel_1 curl --version 48 | - name: Nodejs Version check 49 | run: docker exec laravel_laravel_1 node --version 50 | - name: NPM Version check 51 | run: docker exec laravel_laravel_1 npm --version 52 | - name: Composer test 53 | run: docker exec laravel_laravel_1 composer 54 | - name: Check laravel install or not 55 | run: | 56 | while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:53487/index.php)" != "200" ]]; 57 | do 58 | sleep 10s 59 | done 60 | - name: Root path check 61 | run: docker exec laravel_laravel_1 ls -la /var/www 62 | - name: Laravel test 63 | run: curl -i http://localhost:53487/ 64 | - name: Verify MariaDB running from host, create Database and show Database 65 | run: | 66 | while ! docker exec mariadb mysqladmin --user=root --password=password --host "mariadb" ping --silent &> /dev/null ; do 67 | echo "Waiting for database connection..." 68 | sleep 2 69 | done 70 | - name: Download Database information with env / download preconfigure env 71 | run: docker exec laravel_laravel_1 sudo wget -O /var/www/.env https://raw.githubusercontent.com/nabad600/image-test-file/main/laravel.env 72 | - name: Enverment file contan check 73 | run: docker exec laravel_laravel_1 cat /var/www/.env 74 | - name: Check Laravel to mariadb connection status 75 | run: docker exec laravel_laravel_1 sudo php artisan migrate 76 | - name: Destroy container and file 77 | run: | 78 | docker stop mariadb 79 | docker stop mongo 80 | docker-compose down 81 | docker stop $(docker ps -a -q) 82 | echo "y" | docker system prune -a 83 | sudo rm -rf /tmp/lara 84 | - name: Create ENV 85 | env: 86 | ENV_TEST: ${{ secrets.ENV_TEST }} 87 | run: | 88 | echo "$ENV_TEST" > .env.test 89 | shell: bash 90 | - name: Notify on SUCCESS 91 | if: ${{ SUCCESS() }} 92 | uses: ravsamhq/notify-slack-action@v2 93 | with: 94 | status: ${{ job.status }} 95 | notification_title: "{emoji} *{job}* has {status_message}" 96 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 97 | footer: "Linked Repo <{repo_url}|{repo}>" 98 | mention_users: "D056LFW47NF," 99 | mention_users_when: "SUCCESS" 100 | mention_groups: "C06H0SB11JL" 101 | mention_groups_when: "SUCCESS" 102 | env: 103 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_SUCCESS }} 104 | - name: Notify on FAIL 105 | if: ${{ failure() }} 106 | uses: ravsamhq/notify-slack-action@v2 107 | with: 108 | status: ${{ job.status }} 109 | notification_title: "{emoji} *{job}* has {status_message}" 110 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 111 | footer: "Linked Repo <{repo_url}|{repo}>" 112 | mention_users: "D056LFW47NF" 113 | mention_users_when: "failure,warnings" 114 | mention_groups: "C06G95T1YH3" 115 | mention_groups_when: "failure,warnings" 116 | env: 117 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_FAIL }} 118 | PHP74Laravel-ARM64: 119 | strategy: 120 | matrix: 121 | BACK_END: ["nginx", "apache"] 122 | laraversion: ["7", "8"] 123 | runs-on: ubuntu-22.04 124 | name: PHP7Laravel-ARM64 125 | steps: 126 | - uses: actions/checkout@v4 127 | - uses: uraimo/run-on-arch-action@v2 128 | name: Run commands 129 | id: runcmd 130 | with: 131 | arch: aarch64 132 | distro: ubuntu22.04 133 | run: | 134 | uname -a 135 | echo ::set-output name=uname::$(uname -a) 136 | - name: Get the output 137 | run: | 138 | echo "The uname output was ${{ steps.runcmd.outputs.uname }}" 139 | - name: Docker composer installation 140 | run: | 141 | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 142 | chmod +x /usr/local/bin/docker-compose 143 | - name: Build the Docker image ${{ matrix.BACK_END }}, php 7 and laravel ${{ matrix.laraversion }} 144 | run: docker-compose -f "docker-compose.yml" up -d --build 145 | env: 146 | PHP_VERSION: "7.4" 147 | LARAVEL_VERSION: ${{ matrix.laraversion }} 148 | BACK_END: ${{ matrix.BACK_END }} 149 | XDEBUG: true 150 | DISPLAY_PHPERROR: true 151 | SERVER_ROOT: /var/www/public 152 | APP_CODE_PATH_HOST: /tmp/lara 153 | - name: Build the Docker image mariadb 154 | run: docker run --detach --name mariadb --network=laravel_default -p 3306:3306 --env MARIADB_DATABASE=test --env MARIADB_USER=test --env MARIADB_PASSWORD=test --env MARIADB_ROOT_PASSWORD=password ghcr.io/deck-app/mariadb:10.7 155 | - name: Build the Docker image Mongodb 156 | run: docker run --detach --name mongo --network=laravel_default -p 27017:27017 mongo:latest 157 | - name: PHP version check 158 | run: docker exec laravel_laravel_1 php -v 159 | - name: Mongodb driver check 160 | run: docker exec laravel_laravel_1 php -m | grep mongo 161 | - name: Mysql Driver check 162 | run: docker exec laravel_laravel_1 php -m | grep mysqli 163 | - name: Git Version check 164 | run: docker exec laravel_laravel_1 git --version 165 | - name: Curl Version check 166 | run: docker exec laravel_laravel_1 curl --version 167 | - name: Nodejs Version check 168 | run: docker exec laravel_laravel_1 node --version 169 | - name: NPM Version check 170 | run: docker exec laravel_laravel_1 npm --version 171 | - name: Composer test 172 | run: docker exec laravel_laravel_1 composer 173 | - name: Check laravel install or not 174 | run: | 175 | while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:53487/index.php)" != "200" ]]; 176 | do 177 | sleep 10s 178 | done 179 | - name: Root path check 180 | run: docker exec laravel_laravel_1 ls -la /var/www 181 | - name: Laravel test 182 | run: curl -i http://localhost:53487/ 183 | - name: Verify MariaDB running from host, create Database and show Database 184 | run: | 185 | while ! docker exec mariadb mysqladmin --user=root --password=password --host "mariadb" ping --silent &> /dev/null ; do 186 | echo "Waiting for database connection..." 187 | sleep 2 188 | done 189 | - name: Download Database information with env / download preconfigure env 190 | run: docker exec laravel_laravel_1 sudo wget -O /var/www/.env https://raw.githubusercontent.com/nabad600/image-test-file/main/laravel.env 191 | - name: Enverment file contan check 192 | run: docker exec laravel_laravel_1 cat /var/www/.env 193 | - name: Check Laravel to mariadb connection status 194 | run: docker exec laravel_laravel_1 sudo php artisan migrate 195 | - name: Destroy container and file 196 | run: | 197 | docker stop mariadb 198 | docker stop mongo 199 | docker-compose down 200 | docker stop $(docker ps -a -q) 201 | echo "y" | docker system prune -a 202 | sudo rm -rf /tmp/lara 203 | - name: Create ENV 204 | env: 205 | ENV_TEST: ${{ secrets.ENV_TEST }} 206 | run: | 207 | echo "$ENV_TEST" > .env.test 208 | shell: bash 209 | - name: Notify on SUCCESS 210 | if: ${{ SUCCESS() }} 211 | uses: ravsamhq/notify-slack-action@v2 212 | with: 213 | status: ${{ job.status }} 214 | notification_title: "{emoji} *{job}* has {status_message}" 215 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 216 | footer: "Linked Repo <{repo_url}|{repo}>" 217 | mention_users: "D056LFW47NF," 218 | mention_users_when: "SUCCESS" 219 | mention_groups: "C06H0SB11JL" 220 | mention_groups_when: "SUCCESS" 221 | env: 222 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_SUCCESS }} 223 | - name: Notify on FAIL 224 | if: ${{ failure() }} 225 | uses: ravsamhq/notify-slack-action@v2 226 | with: 227 | status: ${{ job.status }} 228 | notification_title: "{emoji} *{job}* has {status_message}" 229 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 230 | footer: "Linked Repo <{repo_url}|{repo}>" 231 | mention_users: "D056LFW47NF" 232 | mention_users_when: "failure,warnings" 233 | mention_groups: "C06G95T1YH3" 234 | mention_groups_when: "failure,warnings" 235 | env: 236 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_FAIL }} 237 | 238 | ################################################# PHP8.0 ##################################################################################### 239 | 240 | PHP8Laravel-AMD64: 241 | strategy: 242 | matrix: 243 | BACK_END: ["nginx", "apache"] 244 | laraversion: ["7", "8", "9"] 245 | runs-on: ubuntu-latest 246 | steps: 247 | - uses: actions/checkout@v2 248 | - name: Docker composer installation 249 | run: | 250 | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 251 | chmod +x /usr/local/bin/docker-compose 252 | - name: Build the Docker image ${{ matrix.BACK_END }}, php 8 and laravel ${{ matrix.laraversion }} 253 | run: docker-compose -f "docker-compose.yml" up -d --build 254 | env: 255 | PHP_VERSION: "8.0" 256 | LARAVEL_VERSION: ${{ matrix.laraversion }} 257 | BACK_END: ${{ matrix.BACK_END }} 258 | XDEBUG: true 259 | DISPLAY_PHPERROR: true 260 | SERVER_ROOT: /var/www/public 261 | APP_CODE_PATH_HOST: /tmp/lara 262 | - name: Build the Docker image mariadb 263 | run: docker run --detach --name mariadb --network=laravel_default -p 3306:3306 --env MARIADB_DATABASE=test --env MARIADB_USER=test --env MARIADB_PASSWORD=test --env MARIADB_ROOT_PASSWORD=password ghcr.io/deck-app/mariadb:10.7 264 | - name: Build the Docker image Mongodb 265 | run: docker run --detach --name mongo --network=laravel_default -p 27017:27017 mongo:latest 266 | - name: PHP version check 267 | run: docker exec laravel_laravel_1 php -v 268 | - name: Mongodb driver check 269 | run: docker exec laravel_laravel_1 php -m | grep mongo 270 | - name: Mysql Driver check 271 | run: docker exec laravel_laravel_1 php -m | grep mysqli 272 | - name: Git Version check 273 | run: docker exec laravel_laravel_1 git --version 274 | - name: Curl Version check 275 | run: docker exec laravel_laravel_1 curl --version 276 | - name: Nodejs Version check 277 | run: docker exec laravel_laravel_1 node --version 278 | - name: NPM Version check 279 | run: docker exec laravel_laravel_1 npm --version 280 | - name: Composer test 281 | run: docker exec laravel_laravel_1 composer 282 | - name: Check laravel install or not 283 | run: | 284 | while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:53487/index.php)" != "200" ]]; 285 | do 286 | sleep 10s 287 | done 288 | - name: Root path check 289 | run: docker exec laravel_laravel_1 ls -la /var/www 290 | - name: Laravel test 291 | run: curl -i http://localhost:53487/ 292 | - name: Verify MariaDB running from host, create Database and show Database 293 | run: | 294 | while ! docker exec mariadb mysqladmin --user=root --password=password --host "mariadb" ping --silent &> /dev/null ; do 295 | echo "Waiting for database connection..." 296 | sleep 2 297 | done 298 | - name: Download Database information with env / download preconfigure env 299 | run: docker exec laravel_laravel_1 sudo wget -O /var/www/.env https://raw.githubusercontent.com/nabad600/image-test-file/main/laravel.env 300 | - name: Enverment file contan check 301 | run: docker exec laravel_laravel_1 cat /var/www/.env 302 | - name: Check Laravel to mariadb connection status 303 | run: docker exec laravel_laravel_1 sudo php artisan migrate 304 | - name: Destroy container and file 305 | run: | 306 | docker stop mariadb 307 | docker stop mongo 308 | docker-compose down 309 | docker stop $(docker ps -a -q) 310 | echo "y" | docker system prune -a 311 | sudo rm -rf /tmp/lara 312 | - name: Create ENV 313 | env: 314 | ENV_TEST: ${{ secrets.ENV_TEST }} 315 | run: | 316 | echo "$ENV_TEST" > .env.test 317 | shell: bash 318 | - name: Notify on SUCCESS 319 | if: ${{ SUCCESS() }} 320 | uses: ravsamhq/notify-slack-action@v2 321 | with: 322 | status: ${{ job.status }} 323 | notification_title: "{emoji} *{job}* has {status_message}" 324 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 325 | footer: "Linked Repo <{repo_url}|{repo}>" 326 | mention_users: "D056LFW47NF," 327 | mention_users_when: "SUCCESS" 328 | mention_groups: "C06H0SB11JL" 329 | mention_groups_when: "SUCCESS" 330 | env: 331 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_SUCCESS }} 332 | - name: Notify on FAIL 333 | if: ${{ failure() }} 334 | uses: ravsamhq/notify-slack-action@v2 335 | with: 336 | status: ${{ job.status }} 337 | notification_title: "{emoji} *{job}* has {status_message}" 338 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 339 | footer: "Linked Repo <{repo_url}|{repo}>" 340 | mention_users: "D056LFW47NF" 341 | mention_users_when: "failure,warnings" 342 | mention_groups: "C06G95T1YH3" 343 | mention_groups_when: "failure,warnings" 344 | env: 345 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_FAIL }} 346 | PHP8Laravel-ARM64: 347 | strategy: 348 | matrix: 349 | BACK_END: ["nginx", "apache"] 350 | laraversion: ["7", "8", "9"] 351 | runs-on: ubuntu-22.04 352 | name: PHP8Laravel-ARM64 353 | steps: 354 | - uses: actions/checkout@v4 355 | - uses: uraimo/run-on-arch-action@v2 356 | name: Run commands 357 | id: runcmd 358 | with: 359 | arch: aarch64 360 | distro: ubuntu22.04 361 | run: | 362 | uname -a 363 | echo ::set-output name=uname::$(uname -a) 364 | - name: Get the output 365 | run: | 366 | echo "The uname output was ${{ steps.runcmd.outputs.uname }}" 367 | - name: Docker composer installation 368 | run: | 369 | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 370 | chmod +x /usr/local/bin/docker-compose 371 | - name: Build the Docker image ${{ matrix.BACK_END }}, php 8 and laravel ${{ matrix.laraversion }} 372 | run: docker-compose -f "docker-compose.yml" up -d --build 373 | env: 374 | PHP_VERSION: "8.0" 375 | LARAVEL_VERSION: ${{ matrix.laraversion }} 376 | BACK_END: ${{ matrix.BACK_END }} 377 | XDEBUG: true 378 | DISPLAY_PHPERROR: true 379 | SERVER_ROOT: /var/www/public 380 | APP_CODE_PATH_HOST: /tmp/lara 381 | - name: Build the Docker image mariadb 382 | run: docker run --detach --name mariadb --network=laravel_default -p 3306:3306 --env MARIADB_DATABASE=test --env MARIADB_USER=test --env MARIADB_PASSWORD=test --env MARIADB_ROOT_PASSWORD=password ghcr.io/deck-app/mariadb:10.7 383 | - name: Build the Docker image Mongodb 384 | run: docker run --detach --name mongo --network=laravel_default -p 27017:27017 mongo:latest 385 | - name: PHP version check 386 | run: docker exec laravel_laravel_1 php -v 387 | - name: Mongodb driver check 388 | run: docker exec laravel_laravel_1 php -m | grep mongo 389 | - name: Mysql Driver check 390 | run: docker exec laravel_laravel_1 php -m | grep mysqli 391 | - name: Git Version check 392 | run: docker exec laravel_laravel_1 git --version 393 | - name: Curl Version check 394 | run: docker exec laravel_laravel_1 curl --version 395 | - name: Nodejs Version check 396 | run: docker exec laravel_laravel_1 node --version 397 | - name: NPM Version check 398 | run: docker exec laravel_laravel_1 npm --version 399 | - name: Composer test 400 | run: docker exec laravel_laravel_1 composer 401 | - name: Check laravel install or not 402 | run: | 403 | while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:53487/index.php)" != "200" ]]; 404 | do 405 | sleep 10s 406 | done 407 | - name: Root path check 408 | run: docker exec laravel_laravel_1 ls -la /var/www 409 | - name: Laravel test 410 | run: curl -i http://localhost:53487/ 411 | - name: Verify MariaDB running from host, create Database and show Database 412 | run: | 413 | while ! docker exec mariadb mysqladmin --user=root --password=password --host "mariadb" ping --silent &> /dev/null ; do 414 | echo "Waiting for database connection..." 415 | sleep 2 416 | done 417 | - name: Download Database information with env / download preconfigure env 418 | run: docker exec laravel_laravel_1 sudo wget -O /var/www/.env https://raw.githubusercontent.com/nabad600/image-test-file/main/laravel.env 419 | - name: Enverment file contan check 420 | run: docker exec laravel_laravel_1 cat /var/www/.env 421 | - name: Check Laravel to mariadb connection status 422 | run: docker exec laravel_laravel_1 sudo php artisan migrate 423 | - name: Destroy container and file 424 | run: | 425 | docker stop mariadb 426 | docker stop mongo 427 | docker-compose down 428 | docker stop $(docker ps -a -q) 429 | echo "y" | docker system prune -a 430 | sudo rm -rf /tmp/lara 431 | - name: Create ENV 432 | env: 433 | ENV_TEST: ${{ secrets.ENV_TEST }} 434 | run: | 435 | echo "$ENV_TEST" > .env.test 436 | shell: bash 437 | - name: Notify on SUCCESS 438 | if: ${{ SUCCESS() }} 439 | uses: ravsamhq/notify-slack-action@v2 440 | with: 441 | status: ${{ job.status }} 442 | notification_title: "{emoji} *{job}* has {status_message}" 443 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 444 | footer: "Linked Repo <{repo_url}|{repo}>" 445 | mention_users: "D056LFW47NF," 446 | mention_users_when: "SUCCESS" 447 | mention_groups: "C06H0SB11JL" 448 | mention_groups_when: "SUCCESS" 449 | env: 450 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_SUCCESS }} 451 | - name: Notify on FAIL 452 | if: ${{ failure() }} 453 | uses: ravsamhq/notify-slack-action@v2 454 | with: 455 | status: ${{ job.status }} 456 | notification_title: "{emoji} *{job}* has {status_message}" 457 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 458 | footer: "Linked Repo <{repo_url}|{repo}>" 459 | mention_users: "D056LFW47NF" 460 | mention_users_when: "failure,warnings" 461 | mention_groups: "C06G95T1YH3" 462 | mention_groups_when: "failure,warnings" 463 | env: 464 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_FAIL }} 465 | 466 | ################################################# PHP8.1 ##################################################################################### 467 | 468 | PHP81Laravel-AMD64: 469 | strategy: 470 | matrix: 471 | BACK_END: ["nginx", "apache"] 472 | laraversion: ["8", "9", "10"] 473 | runs-on: ubuntu-latest 474 | steps: 475 | - uses: actions/checkout@v2 476 | - name: Docker composer installation 477 | run: | 478 | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 479 | chmod +x /usr/local/bin/docker-compose 480 | - name: Build the Docker image ${{ matrix.BACK_END }}, php 8.1 and laravel ${{ matrix.laraversion }} 481 | run: docker-compose -f "docker-compose.yml" up -d --build 482 | env: 483 | PHP_VERSION: "8.1" 484 | LARAVEL_VERSION: ${{ matrix.laraversion }} 485 | BACK_END: ${{ matrix.BACK_END }} 486 | XDEBUG: true 487 | DISPLAY_PHPERROR: true 488 | SERVER_ROOT: /var/www/public 489 | APP_CODE_PATH_HOST: /tmp/lara 490 | - name: Build the Docker image mariadb 491 | run: docker run --detach --name mariadb --network=laravel_default -p 3306:3306 --env MARIADB_DATABASE=test --env MARIADB_USER=test --env MARIADB_PASSWORD=test --env MARIADB_ROOT_PASSWORD=password ghcr.io/deck-app/mariadb:10.7 492 | - name: Build the Docker image Mongodb 493 | run: docker run --detach --name mongo --network=laravel_default -p 27017:27017 mongo:latest 494 | - name: PHP version check 495 | run: docker exec laravel_laravel_1 php -v 496 | - name: Mongodb driver check 497 | run: docker exec laravel_laravel_1 php -m | grep mongo 498 | - name: Mysql Driver check 499 | run: docker exec laravel_laravel_1 php -m | grep mysqli 500 | - name: Git Version check 501 | run: docker exec laravel_laravel_1 git --version 502 | - name: Curl Version check 503 | run: docker exec laravel_laravel_1 curl --version 504 | - name: Nodejs Version check 505 | run: docker exec laravel_laravel_1 node --version 506 | - name: NPM Version check 507 | run: docker exec laravel_laravel_1 npm --version 508 | - name: Composer test 509 | run: docker exec laravel_laravel_1 composer 510 | - name: Check laravel install or not 511 | run: | 512 | while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:53487/index.php)" != "200" ]]; 513 | do 514 | sleep 10s 515 | done 516 | - name: Root path check 517 | run: docker exec laravel_laravel_1 ls -la /var/www 518 | - name: Laravel test 519 | run: curl -i http://localhost:53487/ 520 | - name: Verify MariaDB running from host, create Database and show Database 521 | run: | 522 | while ! docker exec mariadb mysqladmin --user=root --password=password --host "mariadb" ping --silent &> /dev/null ; do 523 | echo "Waiting for database connection..." 524 | sleep 2 525 | done 526 | - name: Download Database information with env / download preconfigure env 527 | run: docker exec laravel_laravel_1 sudo wget -O /var/www/.env https://raw.githubusercontent.com/nabad600/image-test-file/main/laravel.env 528 | - name: Enverment file contan check 529 | run: docker exec laravel_laravel_1 cat /var/www/.env 530 | - name: Check Laravel to mariadb connection status 531 | run: docker exec laravel_laravel_1 sudo php artisan migrate 532 | - name: Destroy container and file 533 | run: | 534 | docker stop mariadb 535 | docker stop mongo 536 | docker-compose down 537 | docker stop $(docker ps -a -q) 538 | echo "y" | docker system prune -a 539 | sudo rm -rf /tmp/lara 540 | - name: Create ENV 541 | env: 542 | ENV_TEST: ${{ secrets.ENV_TEST }} 543 | run: | 544 | echo "$ENV_TEST" > .env.test 545 | shell: bash 546 | - name: Notify on SUCCESS 547 | if: ${{ SUCCESS() }} 548 | uses: ravsamhq/notify-slack-action@v2 549 | with: 550 | status: ${{ job.status }} 551 | notification_title: "{emoji} *{job}* has {status_message}" 552 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 553 | footer: "Linked Repo <{repo_url}|{repo}>" 554 | mention_users: "D056LFW47NF," 555 | mention_users_when: "SUCCESS" 556 | mention_groups: "C06H0SB11JL" 557 | mention_groups_when: "SUCCESS" 558 | env: 559 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_SUCCESS }} 560 | - name: Notify on FAIL 561 | if: ${{ failure() }} 562 | uses: ravsamhq/notify-slack-action@v2 563 | with: 564 | status: ${{ job.status }} 565 | notification_title: "{emoji} *{job}* has {status_message}" 566 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 567 | footer: "Linked Repo <{repo_url}|{repo}>" 568 | mention_users: "D056LFW47NF" 569 | mention_users_when: "failure,warnings" 570 | mention_groups: "C06G95T1YH3" 571 | mention_groups_when: "failure,warnings" 572 | env: 573 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_FAIL }} 574 | PHP81Laravel-ARM64: 575 | strategy: 576 | matrix: 577 | BACK_END: ["nginx", "apache"] 578 | laraversion: ["8", "9", "10"] 579 | runs-on: ubuntu-22.04 580 | name: PHP81Laravel-ARM64 581 | steps: 582 | - uses: actions/checkout@v4 583 | - uses: uraimo/run-on-arch-action@v2 584 | name: Run commands 585 | id: runcmd 586 | with: 587 | arch: aarch64 588 | distro: ubuntu22.04 589 | run: | 590 | uname -a 591 | echo ::set-output name=uname::$(uname -a) 592 | - name: Get the output 593 | run: | 594 | echo "The uname output was ${{ steps.runcmd.outputs.uname }}" 595 | - name: Docker composer installation 596 | run: | 597 | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 598 | chmod +x /usr/local/bin/docker-compose 599 | - name: Build the Docker image ${{ matrix.BACK_END }}, php 8 and laravel ${{ matrix.laraversion }} 600 | run: docker-compose -f "docker-compose.yml" up -d --build 601 | env: 602 | PHP_VERSION: "8.1" 603 | LARAVEL_VERSION: ${{ matrix.laraversion }} 604 | BACK_END: ${{ matrix.BACK_END }} 605 | XDEBUG: true 606 | DISPLAY_PHPERROR: true 607 | SERVER_ROOT: /var/www/public 608 | APP_CODE_PATH_HOST: /tmp/lara 609 | - name: Build the Docker image mariadb 610 | run: docker run --detach --name mariadb --network=laravel_default -p 3306:3306 --env MARIADB_DATABASE=test --env MARIADB_USER=test --env MARIADB_PASSWORD=test --env MARIADB_ROOT_PASSWORD=password ghcr.io/deck-app/mariadb:10.7 611 | - name: Build the Docker image Mongodb 612 | run: docker run --detach --name mongo --network=laravel_default -p 27017:27017 mongo:latest 613 | - name: PHP version check 614 | run: docker exec laravel_laravel_1 php -v 615 | - name: Mongodb driver check 616 | run: docker exec laravel_laravel_1 php -m | grep mongo 617 | - name: Mysql Driver check 618 | run: docker exec laravel_laravel_1 php -m | grep mysqli 619 | - name: Git Version check 620 | run: docker exec laravel_laravel_1 git --version 621 | - name: Curl Version check 622 | run: docker exec laravel_laravel_1 curl --version 623 | - name: Nodejs Version check 624 | run: docker exec laravel_laravel_1 node --version 625 | - name: NPM Version check 626 | run: docker exec laravel_laravel_1 npm --version 627 | - name: Composer test 628 | run: docker exec laravel_laravel_1 composer 629 | - name: Check laravel install or not 630 | run: | 631 | while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:53487/index.php)" != "200" ]]; 632 | do 633 | sleep 10s 634 | done 635 | - name: Root path check 636 | run: docker exec laravel_laravel_1 ls -la /var/www 637 | - name: Laravel test 638 | run: curl -i http://localhost:53487/ 639 | - name: Verify MariaDB running from host, create Database and show Database 640 | run: | 641 | while ! docker exec mariadb mysqladmin --user=root --password=password --host "mariadb" ping --silent &> /dev/null ; do 642 | echo "Waiting for database connection..." 643 | sleep 2 644 | done 645 | - name: Download Database information with env / download preconfigure env 646 | run: docker exec laravel_laravel_1 sudo wget -O /var/www/.env https://raw.githubusercontent.com/nabad600/image-test-file/main/laravel.env 647 | - name: Enverment file contan check 648 | run: docker exec laravel_laravel_1 cat /var/www/.env 649 | - name: Check Laravel to mariadb connection status 650 | run: docker exec laravel_laravel_1 sudo php artisan migrate 651 | - name: Destroy container and file 652 | run: | 653 | docker stop mariadb 654 | docker stop mongo 655 | docker-compose down 656 | docker stop $(docker ps -a -q) 657 | echo "y" | docker system prune -a 658 | sudo rm -rf /tmp/lara 659 | - name: Create ENV 660 | env: 661 | ENV_TEST: ${{ secrets.ENV_TEST }} 662 | run: | 663 | echo "$ENV_TEST" > .env.test 664 | shell: bash 665 | - name: Notify on SUCCESS 666 | if: ${{ SUCCESS() }} 667 | uses: ravsamhq/notify-slack-action@v2 668 | with: 669 | status: ${{ job.status }} 670 | notification_title: "{emoji} *{job}* has {status_message}" 671 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 672 | footer: "Linked Repo <{repo_url}|{repo}>" 673 | mention_users: "D056LFW47NF," 674 | mention_users_when: "SUCCESS" 675 | mention_groups: "C06H0SB11JL" 676 | mention_groups_when: "SUCCESS" 677 | env: 678 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_SUCCESS }} 679 | - name: Notify on FAIL 680 | if: ${{ failure() }} 681 | uses: ravsamhq/notify-slack-action@v2 682 | with: 683 | status: ${{ job.status }} 684 | notification_title: "{emoji} *{job}* has {status_message}" 685 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 686 | footer: "Linked Repo <{repo_url}|{repo}>" 687 | mention_users: "D056LFW47NF" 688 | mention_users_when: "failure,warnings" 689 | mention_groups: "C06G95T1YH3" 690 | mention_groups_when: "failure,warnings" 691 | env: 692 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_FAIL }} 693 | 694 | ################################################# PHP8.2 ##################################################################################### 695 | 696 | PHP82Laravel-AMD64: 697 | strategy: 698 | matrix: 699 | BACK_END: ["nginx", "apache"] 700 | laraversion: ["9", "10"] 701 | runs-on: ubuntu-latest 702 | steps: 703 | - uses: actions/checkout@v2 704 | - name: Docker composer installation 705 | run: | 706 | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 707 | chmod +x /usr/local/bin/docker-compose 708 | - name: Build the Docker image ${{ matrix.BACK_END }}, php 8.2 and laravel ${{ matrix.laraversion }} 709 | run: docker-compose -f "docker-compose.yml" up -d --build 710 | env: 711 | PHP_VERSION: "8.2" 712 | LARAVEL_VERSION: ${{ matrix.laraversion }} 713 | BACK_END: ${{ matrix.BACK_END }} 714 | XDEBUG: true 715 | DISPLAY_PHPERROR: true 716 | SERVER_ROOT: /var/www/public 717 | APP_CODE_PATH_HOST: /tmp/lara 718 | - name: Build the Docker image mariadb 719 | run: docker run --detach --name mariadb --network=laravel_default -p 3306:3306 --env MARIADB_DATABASE=test --env MARIADB_USER=test --env MARIADB_PASSWORD=test --env MARIADB_ROOT_PASSWORD=password ghcr.io/deck-app/mariadb:10.7 720 | - name: Build the Docker image Mongodb 721 | run: docker run --detach --name mongo --network=laravel_default -p 27017:27017 mongo:latest 722 | - name: PHP version check 723 | run: docker exec laravel_laravel_1 php -v 724 | - name: Mongodb driver check 725 | run: docker exec laravel_laravel_1 php -m | grep mongo 726 | - name: Mysql Driver check 727 | run: docker exec laravel_laravel_1 php -m | grep mysqli 728 | - name: Git Version check 729 | run: docker exec laravel_laravel_1 git --version 730 | - name: Curl Version check 731 | run: docker exec laravel_laravel_1 curl --version 732 | - name: Nodejs Version check 733 | run: docker exec laravel_laravel_1 node --version 734 | - name: NPM Version check 735 | run: docker exec laravel_laravel_1 npm --version 736 | - name: Composer test 737 | run: docker exec laravel_laravel_1 composer 738 | - name: Check laravel install or not 739 | run: | 740 | while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:53487/index.php)" != "200" ]]; 741 | do 742 | sleep 10s 743 | done 744 | - name: Root path check 745 | run: docker exec laravel_laravel_1 ls -la /var/www 746 | - name: Laravel test 747 | run: curl -i http://localhost:53487/ 748 | - name: Verify MariaDB running from host, create Database and show Database 749 | run: | 750 | while ! docker exec mariadb mysqladmin --user=root --password=password --host "mariadb" ping --silent &> /dev/null ; do 751 | echo "Waiting for database connection..." 752 | sleep 2 753 | done 754 | - name: Download Database information with env / download preconfigure env 755 | run: docker exec laravel_laravel_1 sudo wget -O /var/www/.env https://raw.githubusercontent.com/nabad600/image-test-file/main/laravel.env 756 | - name: Enverment file contan check 757 | run: docker exec laravel_laravel_1 cat /var/www/.env 758 | - name: Check Laravel to mariadb connection status 759 | run: docker exec laravel_laravel_1 sudo php artisan migrate 760 | - name: Destroy container and file 761 | run: | 762 | docker stop mariadb 763 | docker stop mongo 764 | docker-compose down 765 | docker stop $(docker ps -a -q) 766 | echo "y" | docker system prune -a 767 | sudo rm -rf /tmp/lara 768 | - name: Create ENV 769 | env: 770 | ENV_TEST: ${{ secrets.ENV_TEST }} 771 | run: | 772 | echo "$ENV_TEST" > .env.test 773 | shell: bash 774 | - name: Notify on SUCCESS 775 | if: ${{ SUCCESS() }} 776 | uses: ravsamhq/notify-slack-action@v2 777 | with: 778 | status: ${{ job.status }} 779 | notification_title: "{emoji} *{job}* has {status_message}" 780 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 781 | footer: "Linked Repo <{repo_url}|{repo}>" 782 | mention_users: "D056LFW47NF," 783 | mention_users_when: "SUCCESS" 784 | mention_groups: "C06H0SB11JL" 785 | mention_groups_when: "SUCCESS" 786 | env: 787 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_SUCCESS }} 788 | - name: Notify on FAIL 789 | if: ${{ failure() }} 790 | uses: ravsamhq/notify-slack-action@v2 791 | with: 792 | status: ${{ job.status }} 793 | notification_title: "{emoji} *{job}* has {status_message}" 794 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 795 | footer: "Linked Repo <{repo_url}|{repo}>" 796 | mention_users: "D056LFW47NF" 797 | mention_users_when: "failure,warnings" 798 | mention_groups: "C06G95T1YH3" 799 | mention_groups_when: "failure,warnings" 800 | env: 801 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_FAIL }} 802 | PHP82Laravel-ARM64: 803 | strategy: 804 | matrix: 805 | BACK_END: ["nginx", "apache"] 806 | laraversion: ["9", "10"] 807 | runs-on: ubuntu-22.04 808 | name: PHP82Laravel-ARM64 809 | steps: 810 | - uses: actions/checkout@v4 811 | - uses: uraimo/run-on-arch-action@v2 812 | name: Run commands 813 | id: runcmd 814 | with: 815 | arch: aarch64 816 | distro: ubuntu22.04 817 | run: | 818 | uname -a 819 | echo ::set-output name=uname::$(uname -a) 820 | - name: Get the output 821 | run: | 822 | echo "The uname output was ${{ steps.runcmd.outputs.uname }}" 823 | - name: Docker composer installation 824 | run: | 825 | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 826 | chmod +x /usr/local/bin/docker-compose 827 | - name: Build the Docker image ${{ matrix.BACK_END }}, php 8 and laravel ${{ matrix.laraversion }} 828 | run: docker-compose -f "docker-compose.yml" up -d --build 829 | env: 830 | PHP_VERSION: "8.2" 831 | LARAVEL_VERSION: ${{ matrix.laraversion }} 832 | BACK_END: ${{ matrix.BACK_END }} 833 | XDEBUG: true 834 | DISPLAY_PHPERROR: true 835 | SERVER_ROOT: /var/www/public 836 | APP_CODE_PATH_HOST: /tmp/lara 837 | - name: Build the Docker image mariadb 838 | run: docker run --detach --name mariadb --network=laravel_default -p 3306:3306 --env MARIADB_DATABASE=test --env MARIADB_USER=test --env MARIADB_PASSWORD=test --env MARIADB_ROOT_PASSWORD=password ghcr.io/deck-app/mariadb:10.7 839 | - name: Build the Docker image Mongodb 840 | run: docker run --detach --name mongo --network=laravel_default -p 27017:27017 mongo:latest 841 | - name: PHP version check 842 | run: docker exec laravel_laravel_1 php -v 843 | - name: Mongodb driver check 844 | run: docker exec laravel_laravel_1 php -m | grep mongo 845 | - name: Mysql Driver check 846 | run: docker exec laravel_laravel_1 php -m | grep mysqli 847 | - name: Git Version check 848 | run: docker exec laravel_laravel_1 git --version 849 | - name: Curl Version check 850 | run: docker exec laravel_laravel_1 curl --version 851 | - name: Nodejs Version check 852 | run: docker exec laravel_laravel_1 node --version 853 | - name: NPM Version check 854 | run: docker exec laravel_laravel_1 npm --version 855 | - name: Composer test 856 | run: docker exec laravel_laravel_1 composer 857 | - name: Check laravel install or not 858 | run: | 859 | while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:53487/index.php)" != "200" ]]; 860 | do 861 | sleep 10s 862 | done 863 | - name: Root path check 864 | run: docker exec laravel_laravel_1 ls -la /var/www 865 | - name: Laravel test 866 | run: curl -i http://localhost:53487/ 867 | - name: Verify MariaDB running from host, create Database and show Database 868 | run: | 869 | while ! docker exec mariadb mysqladmin --user=root --password=password --host "mariadb" ping --silent &> /dev/null ; do 870 | echo "Waiting for database connection..." 871 | sleep 2 872 | done 873 | - name: Download Database information with env / download preconfigure env 874 | run: docker exec laravel_laravel_1 sudo wget -O /var/www/.env https://raw.githubusercontent.com/nabad600/image-test-file/main/laravel.env 875 | - name: Enverment file contan check 876 | run: docker exec laravel_laravel_1 cat /var/www/.env 877 | - name: Check Laravel to mariadb connection status 878 | run: docker exec laravel_laravel_1 sudo php artisan migrate 879 | - name: Destroy container and file 880 | run: | 881 | docker stop mariadb 882 | docker stop mongo 883 | docker-compose down 884 | docker stop $(docker ps -a -q) 885 | echo "y" | docker system prune -a 886 | sudo rm -rf /tmp/lara 887 | - name: Create ENV 888 | env: 889 | ENV_TEST: ${{ secrets.ENV_TEST }} 890 | run: | 891 | echo "$ENV_TEST" > .env.test 892 | shell: bash 893 | - name: Notify on SUCCESS 894 | if: ${{ SUCCESS() }} 895 | uses: ravsamhq/notify-slack-action@v2 896 | with: 897 | status: ${{ job.status }} 898 | notification_title: "{emoji} *{job}* has {status_message}" 899 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 900 | footer: "Linked Repo <{repo_url}|{repo}>" 901 | mention_users: "D056LFW47NF," 902 | mention_users_when: "SUCCESS" 903 | mention_groups: "C06H0SB11JL" 904 | mention_groups_when: "SUCCESS" 905 | env: 906 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_SUCCESS }} 907 | - name: Notify on FAIL 908 | if: ${{ failure() }} 909 | uses: ravsamhq/notify-slack-action@v2 910 | with: 911 | status: ${{ job.status }} 912 | notification_title: "{emoji} *{job}* has {status_message}" 913 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 914 | footer: "Linked Repo <{repo_url}|{repo}>" 915 | mention_users: "D056LFW47NF" 916 | mention_users_when: "failure,warnings" 917 | mention_groups: "C06G95T1YH3" 918 | mention_groups_when: "failure,warnings" 919 | env: 920 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_FAIL }} 921 | 922 | ################################################# PHP8.3 ##################################################################################### 923 | 924 | PHP83Laravel-AMD64: 925 | strategy: 926 | matrix: 927 | BACK_END: ["nginx", "apache"] 928 | laraversion: ["10", "11"] 929 | runs-on: ubuntu-latest 930 | steps: 931 | - uses: actions/checkout@v2 932 | - name: Docker composer installation 933 | run: | 934 | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 935 | chmod +x /usr/local/bin/docker-compose 936 | - name: Build the Docker image ${{ matrix.BACK_END }}, php 8.3 and laravel ${{ matrix.laraversion }} 937 | run: docker-compose -f "docker-compose.yml" up -d --build 938 | env: 939 | PHP_VERSION: "8.3" 940 | LARAVEL_VERSION: ${{ matrix.laraversion }} 941 | BACK_END: ${{ matrix.BACK_END }} 942 | XDEBUG: true 943 | DISPLAY_PHPERROR: true 944 | SERVER_ROOT: /var/www/public 945 | APP_CODE_PATH_HOST: /tmp/lara 946 | - name: Build the Docker image mariadb 947 | run: docker run --detach --name mariadb --network=laravel_default -p 3306:3306 --env MARIADB_DATABASE=test --env MARIADB_USER=test --env MARIADB_PASSWORD=test --env MARIADB_ROOT_PASSWORD=password ghcr.io/deck-app/mariadb:10.7 948 | - name: Build the Docker image Mongodb 949 | run: docker run --detach --name mongo --network=laravel_default -p 27017:27017 mongo:latest 950 | - name: PHP version check 951 | run: docker exec laravel_laravel_1 php -v 952 | - name: Mongodb driver check 953 | run: docker exec laravel_laravel_1 php -m | grep mongo 954 | - name: Mysql Driver check 955 | run: docker exec laravel_laravel_1 php -m | grep mysqli 956 | - name: Git Version check 957 | run: docker exec laravel_laravel_1 git --version 958 | - name: Curl Version check 959 | run: docker exec laravel_laravel_1 curl --version 960 | - name: Nodejs Version check 961 | run: docker exec laravel_laravel_1 node --version 962 | - name: NPM Version check 963 | run: docker exec laravel_laravel_1 npm --version 964 | - name: Composer test 965 | run: docker exec laravel_laravel_1 composer 966 | # - name: Check laravel install or not 967 | # run: | 968 | # while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:53487/index.php)" != "200" ]]; 969 | # do 970 | # sleep 10s 971 | # done 972 | - name: Root path check 973 | run: docker exec laravel_laravel_1 ls -la /var/www 974 | - name: Laravel test 975 | run: curl -i http://localhost:53487/ 976 | - name: Verify MariaDB running from host, create Database and show Database 977 | run: | 978 | while ! docker exec mariadb mysqladmin --user=root --password=password --host "mariadb" ping --silent &> /dev/null ; do 979 | echo "Waiting for database connection..." 980 | sleep 2 981 | done 982 | - name: Download Database information with env / download preconfigure env 983 | run: docker exec laravel_laravel_1 sudo wget -O /var/www/.env https://raw.githubusercontent.com/nabad600/image-test-file/main/laravel.env 984 | - name: Enverment file contan check 985 | run: docker exec laravel_laravel_1 cat /var/www/.env 986 | - name: Check Laravel to mariadb connection status 987 | run: docker exec laravel_laravel_1 sudo php artisan migrate 988 | - name: Destroy container and file 989 | run: | 990 | docker stop mariadb 991 | docker stop mongo 992 | docker-compose down 993 | docker stop $(docker ps -a -q) 994 | echo "y" | docker system prune -a 995 | sudo rm -rf /tmp/lara 996 | - name: Create ENV 997 | env: 998 | ENV_TEST: ${{ secrets.ENV_TEST }} 999 | run: | 1000 | echo "$ENV_TEST" > .env.test 1001 | shell: bash 1002 | - name: Notify on SUCCESS 1003 | if: ${{ SUCCESS() }} 1004 | uses: ravsamhq/notify-slack-action@v2 1005 | with: 1006 | status: ${{ job.status }} 1007 | notification_title: "{emoji} *{job}* has {status_message}" 1008 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 1009 | footer: "Linked Repo <{repo_url}|{repo}>" 1010 | mention_users: "D056LFW47NF," 1011 | mention_users_when: "SUCCESS" 1012 | mention_groups: "C06H0SB11JL" 1013 | mention_groups_when: "SUCCESS" 1014 | env: 1015 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_SUCCESS }} 1016 | - name: Notify on FAIL 1017 | if: ${{ failure() }} 1018 | uses: ravsamhq/notify-slack-action@v2 1019 | with: 1020 | status: ${{ job.status }} 1021 | notification_title: "{emoji} *{job}* has {status_message}" 1022 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 1023 | footer: "Linked Repo <{repo_url}|{repo}>" 1024 | mention_users: "D056LFW47NF" 1025 | mention_users_when: "failure,warnings" 1026 | mention_groups: "C06G95T1YH3" 1027 | mention_groups_when: "failure,warnings" 1028 | env: 1029 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_FAIL }} 1030 | PHP83Laravel-ARM64: 1031 | strategy: 1032 | matrix: 1033 | BACK_END: ["nginx", "apache"] 1034 | laraversion: ["10", "11"] 1035 | runs-on: ubuntu-22.04 1036 | name: PHP83Laravel-ARM64 1037 | steps: 1038 | - uses: actions/checkout@v4 1039 | - uses: uraimo/run-on-arch-action@v2 1040 | name: Run commands 1041 | id: runcmd 1042 | with: 1043 | arch: aarch64 1044 | distro: ubuntu22.04 1045 | run: | 1046 | uname -a 1047 | echo ::set-output name=uname::$(uname -a) 1048 | - name: Get the output 1049 | run: | 1050 | echo "The uname output was ${{ steps.runcmd.outputs.uname }}" 1051 | - name: Docker composer installation 1052 | run: | 1053 | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 1054 | chmod +x /usr/local/bin/docker-compose 1055 | - name: Build the Docker image ${{ matrix.BACK_END }}, php 8 and laravel ${{ matrix.laraversion }} 1056 | run: docker-compose -f "docker-compose.yml" up -d --build 1057 | env: 1058 | PHP_VERSION: "8.3" 1059 | LARAVEL_VERSION: ${{ matrix.laraversion }} 1060 | BACK_END: ${{ matrix.BACK_END }} 1061 | XDEBUG: true 1062 | DISPLAY_PHPERROR: true 1063 | SERVER_ROOT: /var/www/public 1064 | APP_CODE_PATH_HOST: /tmp/lara 1065 | - name: Build the Docker image mariadb 1066 | run: docker run --detach --name mariadb --network=laravel_default -p 3306:3306 --env MARIADB_DATABASE=test --env MARIADB_USER=test --env MARIADB_PASSWORD=test --env MARIADB_ROOT_PASSWORD=password ghcr.io/deck-app/mariadb:10.7 1067 | - name: Build the Docker image Mongodb 1068 | run: docker run --detach --name mongo --network=laravel_default -p 27017:27017 mongo:latest 1069 | - name: PHP version check 1070 | run: docker exec laravel_laravel_1 php -v 1071 | - name: Mongodb driver check 1072 | run: docker exec laravel_laravel_1 php -m | grep mongo 1073 | - name: Mysql Driver check 1074 | run: docker exec laravel_laravel_1 php -m | grep mysqli 1075 | - name: Git Version check 1076 | run: docker exec laravel_laravel_1 git --version 1077 | - name: Curl Version check 1078 | run: docker exec laravel_laravel_1 curl --version 1079 | - name: Nodejs Version check 1080 | run: docker exec laravel_laravel_1 node --version 1081 | - name: NPM Version check 1082 | run: docker exec laravel_laravel_1 npm --version 1083 | - name: Composer test 1084 | run: docker exec laravel_laravel_1 composer 1085 | - name: Check laravel install or not 1086 | run: | 1087 | while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:53487/index.php)" != "200" ]]; 1088 | do 1089 | sleep 10s 1090 | done 1091 | - name: Root path check 1092 | run: docker exec laravel_laravel_1 ls -la /var/www 1093 | - name: Laravel test 1094 | run: curl -i http://localhost:53487/ 1095 | - name: Verify MariaDB running from host, create Database and show Database 1096 | run: | 1097 | while ! docker exec mariadb mysqladmin --user=root --password=password --host "mariadb" ping --silent &> /dev/null ; do 1098 | echo "Waiting for database connection..." 1099 | sleep 2 1100 | done 1101 | - name: Download Database information with env / download preconfigure env 1102 | run: docker exec laravel_laravel_1 sudo wget -O /var/www/.env https://raw.githubusercontent.com/nabad600/image-test-file/main/laravel.env 1103 | - name: Enverment file contan check 1104 | run: docker exec laravel_laravel_1 cat /var/www/.env 1105 | - name: Check Laravel to mariadb connection status 1106 | run: docker exec laravel_laravel_1 sudo php artisan migrate 1107 | - name: Destroy container and file 1108 | run: | 1109 | docker stop mariadb 1110 | docker stop mongo 1111 | docker-compose down 1112 | docker stop $(docker ps -a -q) 1113 | echo "y" | docker system prune -a 1114 | sudo rm -rf /tmp/lara 1115 | - name: Create ENV 1116 | env: 1117 | ENV_TEST: ${{ secrets.ENV_TEST }} 1118 | run: | 1119 | echo "$ENV_TEST" > .env.test 1120 | shell: bash 1121 | - name: Notify on SUCCESS 1122 | if: ${{ SUCCESS() }} 1123 | uses: ravsamhq/notify-slack-action@v2 1124 | with: 1125 | status: ${{ job.status }} 1126 | notification_title: "{emoji} *{job}* has {status_message}" 1127 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 1128 | footer: "Linked Repo <{repo_url}|{repo}>" 1129 | mention_users: "D056LFW47NF," 1130 | mention_users_when: "SUCCESS" 1131 | mention_groups: "C06H0SB11JL" 1132 | mention_groups_when: "SUCCESS" 1133 | env: 1134 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_SUCCESS }} 1135 | - name: Notify on FAIL 1136 | if: ${{ failure() }} 1137 | uses: ravsamhq/notify-slack-action@v2 1138 | with: 1139 | status: ${{ job.status }} 1140 | notification_title: "{emoji} *{job}* has {status_message}" 1141 | message_format: "*{workflow}* {status_message} in <{branch_url}|{branch}> Architecture <{run_url}|{job}> Approved by ${{ github.event.head_commit.author.name }}" 1142 | footer: "Linked Repo <{repo_url}|{repo}>" 1143 | mention_users: "D056LFW47NF" 1144 | mention_users_when: "failure,warnings" 1145 | mention_groups: "C06G95T1YH3" 1146 | mention_groups_when: "failure,warnings" 1147 | env: 1148 | SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_FAIL }} 1149 | 1150 | -------------------------------------------------------------------------------- /.github/workflows/docker-image.yml: -------------------------------------------------------------------------------- 1 | name: LARAVEL 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | Laravel: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | - name: Docker composer installation 15 | run: | 16 | curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 17 | chmod +x /usr/local/bin/docker-compose 18 | - name: Build the image with php 8.2 Laravel 10 and nginx 19 | run: docker-compose -f "docker-compose.yml" up -d --build 20 | env: 21 | PHP_VERSION: "8.2" 22 | LARAVEL_VERSION: 10 23 | BACK_END: nginx 24 | LARAVEL_INSTALL: true 25 | XDEBUG: true 26 | DISPLAY_PHPERROR: true 27 | - name: Build the image with php 8.1 Laravel 10 and nginx 28 | run: docker-compose -f "docker-compose.yml" up -d --build 29 | env: 30 | PHP_VERSION: "8.1" 31 | LARAVEL_VERSION: 10 32 | BACK_END: nginx 33 | LARAVEL_INSTALL: true 34 | XDEBUG: true 35 | - name: Build the image with php 8.1 Laravel 9 and nginx 36 | run: docker-compose -f "docker-compose.yml" up -d --build 37 | env: 38 | PHP_VERSION: "8.1" 39 | LARAVEL_VERSION: 9 40 | BACK_END: nginx 41 | LARAVEL_INSTALL: true 42 | XDEBUG: true 43 | DISPLAY_PHPERROR: true 44 | - name: Build the image with php 8.1 Laravel 8 and nginx 45 | run: docker-compose -f "docker-compose.yml" up -d --build 46 | env: 47 | PHP_VERSION: "8.1" 48 | LARAVEL_VERSION: 8 49 | BACK_END: nginx 50 | LARAVEL_INSTALL: true 51 | XDEBUG: true 52 | DISPLAY_PHPERROR: true 53 | - name: Build the image with php 8.0 Laravel 9 and nginx 54 | run: docker-compose -f "docker-compose.yml" up -d --build 55 | env: 56 | PHP_VERSION: "8.0" 57 | LARAVEL_VERSION: 9 58 | BACK_END: nginx 59 | LARAVEL_INSTALL: true 60 | XDEBUG: true 61 | DISPLAY_PHPERROR: true 62 | - name: Build the image with php 8.0 Laravel 8 and nginx 63 | run: docker-compose -f "docker-compose.yml" up -d --build 64 | env: 65 | PHP_VERSION: "8.0" 66 | LARAVEL_VERSION: 8 67 | BACK_END: nginx 68 | LARAVEL_INSTALL: true 69 | XDEBUG: true 70 | DISPLAY_PHPERROR: true 71 | - name: Build the image with php 8.0 Laravel 7 and nginx 72 | run: docker-compose build 73 | env: 74 | PHP_VERSION: "8.0" 75 | LARAVEL_VERSION: 7 76 | BACK_END: nginx 77 | LARAVEL_INSTALL: true 78 | XDEBUG: true 79 | DISPLAY_PHPERROR: true 80 | - name: Build the image with php 7.4 Laravel 8 and nginx 81 | run: docker-compose build 82 | env: 83 | PHP_VERSION: "7.4" 84 | LARAVEL_VERSION: 8 85 | BACK_END: nginx 86 | LARAVEL_INSTALL: true 87 | XDEBUG: true 88 | DISPLAY_PHPERROR: true 89 | - name: Build the image with php 7.4 Laravel 7 and nginx 90 | run: docker-compose build 91 | env: 92 | PHP_VERSION: "7.4" 93 | LARAVEL_VERSION: 7 94 | BACK_END: nginx 95 | LARAVEL_INSTALL: true 96 | XDEBUG: true 97 | DISPLAY_PHPERROR: true 98 | - name: Build the image with php 8.2 Laravel 10 and apache 99 | run: docker-compose build 100 | env: 101 | PHP_VERSION: "8.2" 102 | LARAVEL_VERSION: 10 103 | BACK_END: apache 104 | LARAVEL_INSTALL: true 105 | XDEBUG: true 106 | DISPLAY_PHPERROR: true 107 | - name: Build the image with php 8.1 Laravel 10 and apache 108 | run: docker-compose build 109 | env: 110 | PHP_VERSION: "8.1" 111 | LARAVEL_VERSION: 10 112 | BACK_END: apache 113 | LARAVEL_INSTALL: true 114 | XDEBUG: true 115 | DISPLAY_PHPERROR: true 116 | - name: Build the image with php 8.1 Laravel 9 and apache 117 | run: docker-compose build 118 | env: 119 | PHP_VERSION: "8.1" 120 | LARAVEL_VERSION: 9 121 | BACK_END: apache 122 | LARAVEL_INSTALL: true 123 | XDEBUG: true 124 | DISPLAY_PHPERROR: true 125 | - name: Build the image with php 8.1 Laravel 8 and apache 126 | run: docker-compose build 127 | env: 128 | PHP_VERSION: "8.1" 129 | LARAVEL_VERSION: 8 130 | BACK_END: apache 131 | LARAVEL_INSTALL: true 132 | XDEBUG: true 133 | DISPLAY_PHPERROR: true 134 | - name: Build the image with php 8.0 Laravel 9 and apache 135 | run: docker-compose build 136 | env: 137 | PHP_VERSION: "8.0" 138 | LARAVEL_VERSION: 9 139 | BACK_END: apache 140 | LARAVEL_INSTALL: true 141 | XDEBUG: true 142 | DISPLAY_PHPERROR: true 143 | - name: Build the image with php 8.0 Laravel 8 and apache 144 | run: docker-compose build 145 | env: 146 | PHP_VERSION: "8.0" 147 | LARAVEL_VERSION: 8 148 | BACK_END: apache 149 | LARAVEL_INSTALL: true 150 | XDEBUG: true 151 | DISPLAY_PHPERROR: true 152 | - name: Build the image with php 8.0 Laravel 7 and apache 153 | run: docker-compose build 154 | env: 155 | PHP_VERSION: "8.0" 156 | LARAVEL_VERSION: 7 157 | BACK_END: apache 158 | LARAVEL_INSTALL: true 159 | XDEBUG: true 160 | DISPLAY_PHPERROR: true 161 | - name: Build the image with php 7.4 Laravel 8 and apache 162 | run: docker-compose build 163 | env: 164 | PHP_VERSION: "7.4" 165 | LARAVEL_VERSION: 8 166 | BACK_END: apache 167 | LARAVEL_INSTALL: true 168 | XDEBUG: true 169 | DISPLAY_PHPERROR: true 170 | - name: Build the image with php 7.4 Laravel 7 and apache 171 | run: docker-compose build 172 | env: 173 | PHP_VERSION: "7.4" 174 | LARAVEL_VERSION: 7 175 | BACK_END: apache 176 | LARAVEL_INSTALL: true 177 | XDEBUG: true 178 | DISPLAY_PHPERROR: true 179 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | data -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes of this project will be documented in this file. 4 | 5 | [v2.1.6] - 2022-09-05 6 | ----------------------------------------------------------------------------------- 7 | Issue 8 | * Failed to download laravel/laravel from dist curl error. 9 | 10 | Added 11 | * **Internet** - Check internet working or not in container. 12 | * **Changelog** - Add to changelog.md file. 13 | 14 | Fix 15 | * Added super-user to all the commands ([f696df1](https://github.com/deck-app/laravel/commit/f696df114835387ad4ea596a5c9170799f5c9e35)). 16 | * Execute for loop in docker-entrypoint. 17 | 18 | [v2.1.4] - 2022-08-01 19 | ----------------------------------------------------------------------------------- 20 | Here we would have the update steps for v2.1.4 for people to follow. 21 | 22 | Added 23 | Changed 24 | Container auto login as a User. 25 | 26 | | Stack | Nginx | Apache | 27 | |-------|--------|--------| 28 | | User | nobody | apache | 29 | 30 | Fixed 31 | * Separate nginx and apache file. ([7ebf757](https://github.com/deck-app/laravel/commit/7ebf757dee0467691fc7037370989d63e93bdb0d)) 32 | * Changed permission of all the necessary files and folders and also container login changed ([7ebf757](https://github.com/deck-app/laravel/commit/7ebf757dee0467691fc7037370989d63e93bdb0d)) 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # laravel 2 | ## Introduction 3 | Laravel is a web application framework for PHP, released as free and open-source software under the MIT License. 4 | 5 | Deck Laravel Development Container has been carefully engineered to provide you and your team with a highly reproducible Laravel development environment. We hope you find the Deck Laravel Development Container useful in your quest for world domination. Happy hacking! 6 | 7 | ## Getting started 8 | The quickest way to get started with the Deck Laravel Development Container is using docker-compose. 9 | 10 | Begin by creating a directory for your Laravel application: 11 | ``` 12 | mkdir ~/myapp 13 | cd ~/myapp 14 | ``` 15 | Clone the application directory: 16 | ``` 17 | $ git clone https://github.com/deck-app/laravel.git 18 | $ cd laravel 19 | ``` 20 | Finally launch the Laravel application development environment using: 21 | ``` 22 | $ docker-compose up -d 23 | ``` 24 | -------------------------------------------------------------------------------- /default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deck-app/laravel/61f2e482619af2b5ca7dde588301047bb1a8ec7f/default.png -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | laravel: 4 | build: 5 | context: 'laravel/${BACK_END}' 6 | dockerfile: 'Dockerfile-${PHP_VERSION}' 7 | args: 8 | - 'BACK_END=${BACK_END}' 9 | - 'USER_ID=${USER_ID}' 10 | - 'GROUP_ID=${GROUP_ID}' 11 | - 'PHP_VERSION=${PHP_VERSION}' 12 | - 'DISPLAY_PHPERROR=${DISPLAY_PHPERROR}' 13 | - 'XDEBUG=${XDEBUG}' 14 | - 'LARAVEL_VERSION=${LARAVEL_VERSION}' 15 | - 'INSTALL_ADDITIONAL_EXTENSIONS=${INSTALL_ADDITIONAL_EXTENSIONS}' 16 | volumes: 17 | - '${APP_CODE_PATH_HOST}:${APP_CODE_PATH_LARAVEL}${APP_CODE_CONTAINER_FLAG}' 18 | ports: 19 | - '${LARAVEL_HOST_HTTP_PORT}:80' 20 | volumes: {} 21 | -------------------------------------------------------------------------------- /laravel/apache/Dockerfile-7.4: -------------------------------------------------------------------------------- 1 | ARG BACK_END 2 | FROM ghcr.io/deck-app/apache:v7.4 3 | LABEL maintainer Naba Das 4 | 5 | ARG LARAVEL_VERSION 6 | RUN mkdir -p /app 7 | RUN mkdir -p /var/preview 8 | COPY httpd.conf /app/httpd.conf 9 | COPY httpd.conf /etc/apache2/httpd.conf 10 | RUN wget -O /var/preview/index.html https://raw.githubusercontent.com/deck-app/stack-preview-screen/main/install/index.html 11 | 12 | ARG SERVER_ROOT 13 | RUN sed -i "s#{SERVER_ROOT}#/var/preview#g" /etc/apache2/httpd.conf 14 | RUN sed -i "s#{SERVER_ROOT}#/var/www/public#g" /app/httpd.conf 15 | 16 | # Persistent runtime dependencies 17 | # Example RUN apk add --no-cache php7-openssl php7-sysvmsg php7-curl 18 | 19 | WORKDIR /var/www 20 | 21 | ENV PHP_VERSION=7 22 | ADD package.sh /package.sh 23 | 24 | COPY php.ini /etc/php${PHP_VERSION}/php.ini 25 | ARG DISPLAY_PHPERROR 26 | RUN if [ ${DISPLAY_PHPERROR} = true ]; then \ 27 | sed -i "s#{DISPLAY}#On#g" /etc/php${PHP_VERSION}/php.ini \ 28 | ;else \ 29 | sed -i "s#{DISPLAY}#Off#g" /etc/php${PHP_VERSION}/php.ini \ 30 | ;fi 31 | 32 | #Xdebug enable or disable 33 | ARG XDEBUG 34 | RUN if [ ${XDEBUG} = true ]; then \ 35 | apk add php${PHP_VERSION}-pecl-xdebug \ 36 | && echo "[xdebug]" >> /etc/php${PHP_VERSION}/php.ini \ 37 | && echo "zend_extension = xdebug" >> /etc/php${PHP_VERSION}/php.ini \ 38 | && echo "xdebug.mode = debug" >> /etc/php${PHP_VERSION}/php.ini \ 39 | && echo "xdebug.remote_autostart = 0" >> /etc/php${PHP_VERSION}/php.ini \ 40 | && echo "xdebug.remote_enable = 1" >> /etc/php${PHP_VERSION}/php.ini \ 41 | && echo "xdebug.log_level = 0" >> /etc/php${PHP_VERSION}/php.ini \ 42 | && echo "xdebug.discover_client_host = 1" >> /etc/php${PHP_VERSION}/php.ini \ 43 | && echo "xdebug.client_host = host.docker.internal" >> /etc/php${PHP_VERSION}/php.ini \ 44 | && echo "xdebug.start_with_request = yes" >> /etc/php${PHP_VERSION}/php.ini \ 45 | ;fi 46 | 47 | RUN apk add php${PHP_VERSION}-zip php${PHP_VERSION}-pdo_mysql php${PHP_VERSION}-gd 48 | RUN apk add zip nano 49 | ARG LARAVEL_VERSION 50 | COPY docker-entrypoint.sh /docker-entrypoint.sh 51 | RUN sed -i "s#{LARAVEL_VERSION}#${LARAVEL_VERSION}#g" /docker-entrypoint.sh 52 | RUN chmod +x /docker-entrypoint.sh 53 | 54 | ## Linux permission issue 55 | ARG USER_ID 56 | ARG GROUP_ID 57 | RUN apk --no-cache add shadow sudo 58 | RUN usermod -u ${USER_ID} apache && groupmod -g ${GROUP_ID} apache 59 | 60 | # sudo command without password 61 | RUN echo "apache ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 62 | RUN composer config --global process-timeout 6000 63 | 64 | RUN sed -i "s#{USER_ID}#${USER_ID}#g" /docker-entrypoint.sh 65 | RUN sed -i "s#{GROUP_ID}#${GROUP_ID}#g" /docker-entrypoint.sh 66 | 67 | ## apache2 permission issue 68 | RUN usermod --home /home apache 69 | RUN touch /env 70 | RUN chown -R apache:apache /env 71 | RUN chown -R apache:apache /home 72 | RUN chown -R apache:apache /var/preview/ 73 | RUN chown -R apache:apache /usr/sbin/httpd 74 | RUN chown -R apache:apache /etc/service/apache 75 | RUN chown -R apache:apache /sbin/ 76 | RUN chown -R apache:apache /etc/service/ 77 | RUN chown -R apache:apache /etc/apache2 78 | RUN chown -R apache:apache /var/run/apache2 79 | RUN chown -R apache:apache /var/log/apache2 80 | ARG INSTALL_ADDITIONAL_EXTENSIONS 81 | ENV INSTALL_ADDITIONAL_EXTENSIONS=$INSTALL_ADDITIONAL_EXTENSIONS 82 | RUN if [ -z "$INSTALL_ADDITIONAL_EXTENSIONS" ] ; then \ 83 | echo "No additional PHP extensions added" \ 84 | ;else \ 85 | bash /package.sh \ 86 | ;fi 87 | USER apache 88 | CMD /docker-entrypoint.sh & /sbin/runit-wrapper -------------------------------------------------------------------------------- /laravel/apache/Dockerfile-8.0: -------------------------------------------------------------------------------- 1 | ARG BACK_END 2 | FROM ghcr.io/deck-app/apache:v8.0 3 | LABEL maintainer Naba Das 4 | 5 | ARG LARAVEL_VERSION 6 | RUN mkdir -p /app 7 | RUN mkdir -p /var/preview 8 | COPY httpd.conf /app/httpd.conf 9 | COPY httpd.conf /etc/apache2/httpd.conf 10 | RUN wget -O /var/preview/index.html https://raw.githubusercontent.com/deck-app/stack-preview-screen/main/install/index.html 11 | 12 | ARG SERVER_ROOT 13 | RUN sed -i "s#{SERVER_ROOT}#/var/preview#g" /etc/apache2/httpd.conf 14 | RUN sed -i "s#{SERVER_ROOT}#/var/www/public#g" /app/httpd.conf 15 | 16 | # Persistent runtime dependencies 17 | # Example RUN apk add --no-cache php8-openssl php8-sysvmsg php8-curl 18 | 19 | WORKDIR /var/www 20 | ENV PHP_VERSION=8 21 | ADD package.sh /package.sh 22 | 23 | COPY php.ini /etc/php8/php.ini 24 | ARG DISPLAY_PHPERROR 25 | RUN if [ ${DISPLAY_PHPERROR} = true ]; then \ 26 | sed -i "s#{DISPLAY}#On#g" /etc/php${PHP_VERSION}/php.ini \ 27 | ;else \ 28 | sed -i "s#{DISPLAY}#Off#g" /etc/php${PHP_VERSION}/php.ini \ 29 | ;fi 30 | 31 | #Xdebug enable or disable 32 | ARG XDEBUG 33 | RUN if [ ${XDEBUG} = true ]; then \ 34 | apk add php${PHP_VERSION}-pecl-xdebug \ 35 | && echo "[xdebug]" >> /etc/php${PHP_VERSION}/php.ini \ 36 | && echo "zend_extension = xdebug" >> /etc/php${PHP_VERSION}/php.ini \ 37 | && echo "xdebug.mode = debug" >> /etc/php${PHP_VERSION}/php.ini \ 38 | && echo "xdebug.remote_autostart = 0" >> /etc/php${PHP_VERSION}/php.ini \ 39 | && echo "xdebug.remote_enable = 1" >> /etc/php${PHP_VERSION}/php.ini \ 40 | && echo "xdebug.log_level = 0" >> /etc/php${PHP_VERSION}/php.ini \ 41 | && echo "xdebug.discover_client_host = 1" >> /etc/php${PHP_VERSION}/php.ini \ 42 | && echo "xdebug.client_host = host.docker.internal" >> /etc/php${PHP_VERSION}/php.ini \ 43 | && echo "xdebug.start_with_request = yes" >> /etc/php${PHP_VERSION}/php.ini \ 44 | ;fi 45 | 46 | RUN apk add php${PHP_VERSION}-zip php${PHP_VERSION}-pdo_mysql php${PHP_VERSION}-gd 47 | RUN apk add zip nano 48 | ARG LARAVEL_VERSION 49 | COPY docker-entrypoint.sh /docker-entrypoint.sh 50 | RUN sed -i "s#{LARAVEL_VERSION}#${LARAVEL_VERSION}#g" /docker-entrypoint.sh 51 | RUN chmod +x /docker-entrypoint.sh 52 | 53 | ## Linux permission issue 54 | ARG USER_ID 55 | ARG GROUP_ID 56 | RUN apk --no-cache add shadow sudo 57 | RUN usermod -u ${USER_ID} apache && groupmod -g ${GROUP_ID} apache 58 | 59 | # sudo command without password 60 | RUN echo "apache ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 61 | RUN composer config --global process-timeout 6000 62 | 63 | RUN sed -i "s#{USER_ID}#${USER_ID}#g" /docker-entrypoint.sh 64 | RUN sed -i "s#{GROUP_ID}#${GROUP_ID}#g" /docker-entrypoint.sh 65 | 66 | ## apache2 permission issue 67 | RUN usermod --home /home apache 68 | RUN touch /env 69 | RUN chown -R apache:apache /env 70 | RUN chown -R apache:apache /home 71 | RUN chown -R apache:apache /var/preview/ 72 | RUN chown -R apache:apache /usr/sbin/httpd 73 | RUN chown -R apache:apache /etc/service/apache 74 | RUN chown -R apache:apache /sbin/ 75 | RUN chown -R apache:apache /etc/service/ 76 | RUN chown -R apache:apache /etc/apache2 77 | RUN chown -R apache:apache /var/run/apache2 78 | RUN chown -R apache:apache /var/log/apache2 79 | ARG INSTALL_ADDITIONAL_EXTENSIONS 80 | ENV INSTALL_ADDITIONAL_EXTENSIONS=$INSTALL_ADDITIONAL_EXTENSIONS 81 | RUN if [ -z "$INSTALL_ADDITIONAL_EXTENSIONS" ] ; then \ 82 | echo "No additional PHP extensions added" \ 83 | ;else \ 84 | bash /package.sh \ 85 | ;fi 86 | USER apache 87 | CMD /docker-entrypoint.sh & /sbin/runit-wrapper -------------------------------------------------------------------------------- /laravel/apache/Dockerfile-8.1: -------------------------------------------------------------------------------- 1 | ARG BACK_END 2 | FROM ghcr.io/deck-app/apache:v8.1 3 | LABEL maintainer Naba Das 4 | 5 | ARG LARAVEL_VERSION 6 | RUN mkdir -p /app 7 | RUN mkdir -p /var/preview 8 | COPY httpd.conf /app/httpd.conf 9 | COPY httpd.conf /etc/apache2/httpd.conf 10 | RUN wget -O /var/preview/index.html https://raw.githubusercontent.com/deck-app/stack-preview-screen/main/install/index.html 11 | 12 | ARG SERVER_ROOT 13 | RUN sed -i "s#{SERVER_ROOT}#/var/preview#g" /etc/apache2/httpd.conf 14 | RUN sed -i "s#{SERVER_ROOT}#/var/www/public#g" /app/httpd.conf 15 | 16 | # Persistent runtime dependencies 17 | # Example RUN apk add --no-cache php81-openssl php81-sysvmsg php81-curl 18 | 19 | WORKDIR /var/www 20 | ENV PHP_VERSION=81 21 | ADD package.sh /package.sh 22 | 23 | COPY php.ini /etc/php${PHP_VERSION}/php.ini 24 | ARG DISPLAY_PHPERROR 25 | RUN if [ ${DISPLAY_PHPERROR} = true ]; then \ 26 | sed -i "s#{DISPLAY}#On#g" /etc/php${PHP_VERSION}/php.ini \ 27 | ;else \ 28 | sed -i "s#{DISPLAY}#Off#g" /etc/php${PHP_VERSION}/php.ini \ 29 | ;fi 30 | 31 | #Xdebug enable or disable 32 | ARG XDEBUG 33 | RUN if [ ${XDEBUG} = true ]; then \ 34 | apk add php${PHP_VERSION}-pecl-xdebug \ 35 | && echo "[xdebug]" >> /etc/php${PHP_VERSION}/php.ini \ 36 | && echo "zend_extension = xdebug" >> /etc/php${PHP_VERSION}/php.ini \ 37 | && echo "xdebug.mode = debug" >> /etc/php${PHP_VERSION}/php.ini \ 38 | && echo "xdebug.remote_autostart = 0" >> /etc/php${PHP_VERSION}/php.ini \ 39 | && echo "xdebug.remote_enable = 1" >> /etc/php${PHP_VERSION}/php.ini \ 40 | && echo "xdebug.log_level = 0" >> /etc/php${PHP_VERSION}/php.ini \ 41 | && echo "xdebug.discover_client_host = 1" >> /etc/php${PHP_VERSION}/php.ini \ 42 | && echo "xdebug.client_host = host.docker.internal" >> /etc/php${PHP_VERSION}/php.ini \ 43 | && echo "xdebug.start_with_request = yes" >> /etc/php${PHP_VERSION}/php.ini \ 44 | ;fi 45 | 46 | 47 | RUN apk add php${PHP_VERSION}-zip php${PHP_VERSION}-pdo_mysql php${PHP_VERSION}-gd 48 | RUN apk add zip nano 49 | ARG LARAVEL_VERSION 50 | COPY docker-entrypoint.sh /docker-entrypoint.sh 51 | RUN sed -i "s#{LARAVEL_VERSION}#${LARAVEL_VERSION}#g" /docker-entrypoint.sh 52 | RUN chmod +x /docker-entrypoint.sh 53 | 54 | ## Linux permission issue 55 | ARG USER_ID 56 | ARG GROUP_ID 57 | RUN apk --no-cache add shadow sudo 58 | RUN usermod -u ${USER_ID} apache && groupmod -g ${GROUP_ID} apache 59 | 60 | # sudo command without password 61 | RUN echo "apache ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 62 | RUN composer config --global process-timeout 6000 63 | 64 | RUN sed -i "s#{USER_ID}#${USER_ID}#g" /docker-entrypoint.sh 65 | RUN sed -i "s#{GROUP_ID}#${GROUP_ID}#g" /docker-entrypoint.sh 66 | 67 | ## apache2 permission issue 68 | RUN usermod --home /home apache 69 | RUN touch /env 70 | RUN chown -R apache:apache /env 71 | RUN chown -R apache:apache /home 72 | RUN chown -R apache:apache /var/preview/ 73 | RUN chown -R apache:apache /usr/sbin/httpd 74 | RUN chown -R apache:apache /etc/service/apache 75 | RUN chown -R apache:apache /sbin/ 76 | RUN chown -R apache:apache /etc/service/ 77 | RUN chown -R apache:apache /var/run/apache2 78 | RUN chown -R apache:apache /etc/apache2 79 | RUN chown -R apache:apache /var/log/apache2 80 | ARG INSTALL_ADDITIONAL_EXTENSIONS 81 | ENV INSTALL_ADDITIONAL_EXTENSIONS=$INSTALL_ADDITIONAL_EXTENSIONS 82 | RUN if [ -z "$INSTALL_ADDITIONAL_EXTENSIONS" ] ; then \ 83 | echo "No additional PHP extensions added" \ 84 | ;else \ 85 | bash /package.sh \ 86 | ;fi 87 | USER apache 88 | CMD /docker-entrypoint.sh & /sbin/runit-wrapper -------------------------------------------------------------------------------- /laravel/apache/Dockerfile-8.2: -------------------------------------------------------------------------------- 1 | ARG BACK_END 2 | FROM ghcr.io/deck-app/apache:v8.2 3 | LABEL maintainer Naba Das 4 | 5 | ARG LARAVEL_VERSION 6 | RUN mkdir -p /app 7 | RUN mkdir -p /var/preview 8 | COPY httpd.conf /app/httpd.conf 9 | COPY httpd.conf /etc/apache2/httpd.conf 10 | RUN wget -O /var/preview/index.html https://raw.githubusercontent.com/deck-app/stack-preview-screen/main/install/index.html 11 | 12 | ARG SERVER_ROOT 13 | RUN sed -i "s#{SERVER_ROOT}#/var/preview#g" /etc/apache2/httpd.conf 14 | RUN sed -i "s#{SERVER_ROOT}#/var/www/public#g" /app/httpd.conf 15 | 16 | # Persistent runtime dependencies 17 | # Example RUN apk add --no-cache php82-openssl php82-sysvmsg php82-curl 18 | 19 | WORKDIR /var/www 20 | ENV PHP_VERSION=82 21 | ADD package.sh /package.sh 22 | 23 | COPY php.ini /etc/php${PHP_VERSION}/php.ini 24 | ARG DISPLAY_PHPERROR 25 | RUN if [ ${DISPLAY_PHPERROR} = true ]; then \ 26 | sed -i "s#{DISPLAY}#On#g" /etc/php${PHP_VERSION}/php.ini \ 27 | ;else \ 28 | sed -i "s#{DISPLAY}#Off#g" /etc/php${PHP_VERSION}/php.ini \ 29 | ;fi 30 | 31 | #Xdebug enable or disable 32 | ARG XDEBUG 33 | RUN if [ ${XDEBUG} = true ]; then \ 34 | apk add php${PHP_VERSION}-pecl-xdebug \ 35 | && echo "[xdebug]" >> /etc/php${PHP_VERSION}/php.ini \ 36 | && echo "zend_extension = xdebug" >> /etc/php${PHP_VERSION}/php.ini \ 37 | && echo "xdebug.mode = debug" >> /etc/php${PHP_VERSION}/php.ini \ 38 | && echo "xdebug.remote_autostart = 0" >> /etc/php${PHP_VERSION}/php.ini \ 39 | && echo "xdebug.remote_enable = 1" >> /etc/php${PHP_VERSION}/php.ini \ 40 | && echo "xdebug.log_level = 0" >> /etc/php${PHP_VERSION}/php.ini \ 41 | && echo "xdebug.discover_client_host = 1" >> /etc/php${PHP_VERSION}/php.ini \ 42 | && echo "xdebug.client_host = host.docker.internal" >> /etc/php${PHP_VERSION}/php.ini \ 43 | && echo "xdebug.start_with_request = yes" >> /etc/php${PHP_VERSION}/php.ini \ 44 | ;fi 45 | 46 | 47 | RUN apk add php${PHP_VERSION}-zip php${PHP_VERSION}-pdo_mysql php${PHP_VERSION}-gd 48 | RUN apk add zip nano 49 | ARG LARAVEL_VERSION 50 | COPY docker-entrypoint.sh /docker-entrypoint.sh 51 | RUN sed -i "s#{LARAVEL_VERSION}#${LARAVEL_VERSION}#g" /docker-entrypoint.sh 52 | RUN chmod +x /docker-entrypoint.sh 53 | 54 | ## Linux permission issue 55 | ARG USER_ID 56 | ARG GROUP_ID 57 | RUN apk --no-cache add shadow sudo 58 | RUN usermod -u ${USER_ID} apache && groupmod -g ${GROUP_ID} apache 59 | 60 | # sudo command without password 61 | RUN echo "apache ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 62 | RUN composer config --global process-timeout 6000 63 | 64 | RUN sed -i "s#{USER_ID}#${USER_ID}#g" /docker-entrypoint.sh 65 | RUN sed -i "s#{GROUP_ID}#${GROUP_ID}#g" /docker-entrypoint.sh 66 | 67 | ## apache2 permission issue 68 | RUN usermod --home /home apache 69 | RUN touch /env 70 | RUN chown -R apache:apache /env 71 | RUN chown -R apache:apache /home 72 | RUN chown -R apache:apache /var/preview/ 73 | RUN chown -R apache:apache /usr/sbin/httpd 74 | RUN chown -R apache:apache /etc/service/apache 75 | RUN chown -R apache:apache /sbin/ 76 | RUN chown -R apache:apache /etc/service/ 77 | RUN chown -R apache:apache /var/run/apache2 78 | RUN chown -R apache:apache /etc/apache2 79 | RUN chown -R apache:apache /var/log/apache2 80 | ARG INSTALL_ADDITIONAL_EXTENSIONS 81 | ENV INSTALL_ADDITIONAL_EXTENSIONS=$INSTALL_ADDITIONAL_EXTENSIONS 82 | RUN if [ -z "$INSTALL_ADDITIONAL_EXTENSIONS" ] ; then \ 83 | echo "No additional PHP extensions added" \ 84 | ;else \ 85 | bash /package.sh \ 86 | ;fi 87 | USER apache 88 | CMD /docker-entrypoint.sh & /sbin/runit-wrapper -------------------------------------------------------------------------------- /laravel/apache/Dockerfile-8.3: -------------------------------------------------------------------------------- 1 | ARG BACK_END 2 | FROM ghcr.io/deck-app/apache:v8.3 3 | LABEL maintainer Naba Das 4 | 5 | ARG LARAVEL_VERSION 6 | RUN mkdir -p /app 7 | RUN mkdir -p /var/preview 8 | COPY httpd.conf /app/httpd.conf 9 | COPY httpd.conf /etc/apache2/httpd.conf 10 | RUN wget -O /var/preview/index.html https://raw.githubusercontent.com/deck-app/stack-preview-screen/main/install/index.html 11 | 12 | ARG SERVER_ROOT 13 | RUN sed -i "s#{SERVER_ROOT}#/var/preview#g" /etc/apache2/httpd.conf 14 | RUN sed -i "s#{SERVER_ROOT}#/var/www/public#g" /app/httpd.conf 15 | 16 | # Persistent runtime dependencies 17 | # Example RUN apk add --no-cache php82-openssl php82-sysvmsg php82-curl 18 | 19 | WORKDIR /var/www 20 | ENV PHP_VERSION=83 21 | ADD package.sh /package.sh 22 | 23 | COPY php.ini /etc/php${PHP_VERSION}/php.ini 24 | ARG DISPLAY_PHPERROR 25 | RUN if [ ${DISPLAY_PHPERROR} = true ]; then \ 26 | sed -i "s#{DISPLAY}#On#g" /etc/php${PHP_VERSION}/php.ini \ 27 | ;else \ 28 | sed -i "s#{DISPLAY}#Off#g" /etc/php${PHP_VERSION}/php.ini \ 29 | ;fi 30 | 31 | #Xdebug enable or disable 32 | ARG XDEBUG 33 | RUN if [ ${XDEBUG} = true ]; then \ 34 | apk add php${PHP_VERSION}-pecl-xdebug \ 35 | && echo "[xdebug]" >> /etc/php${PHP_VERSION}/php.ini \ 36 | && echo "zend_extension = xdebug" >> /etc/php${PHP_VERSION}/php.ini \ 37 | && echo "xdebug.mode = debug" >> /etc/php${PHP_VERSION}/php.ini \ 38 | && echo "xdebug.remote_autostart = 0" >> /etc/php${PHP_VERSION}/php.ini \ 39 | && echo "xdebug.remote_enable = 1" >> /etc/php${PHP_VERSION}/php.ini \ 40 | && echo "xdebug.log_level = 0" >> /etc/php${PHP_VERSION}/php.ini \ 41 | && echo "xdebug.discover_client_host = 1" >> /etc/php${PHP_VERSION}/php.ini \ 42 | && echo "xdebug.client_host = host.docker.internal" >> /etc/php${PHP_VERSION}/php.ini \ 43 | && echo "xdebug.start_with_request = yes" >> /etc/php${PHP_VERSION}/php.ini \ 44 | ;fi 45 | 46 | 47 | RUN apk add php${PHP_VERSION}-zip php${PHP_VERSION}-pdo_mysql php${PHP_VERSION}-gd 48 | RUN apk add zip nano 49 | ARG LARAVEL_VERSION 50 | COPY docker-entrypoint.sh /docker-entrypoint.sh 51 | RUN sed -i "s#{LARAVEL_VERSION}#${LARAVEL_VERSION}#g" /docker-entrypoint.sh 52 | RUN chmod +x /docker-entrypoint.sh 53 | 54 | ## Linux permission issue 55 | ARG USER_ID 56 | ARG GROUP_ID 57 | RUN apk --no-cache add shadow sudo 58 | RUN usermod -u ${USER_ID} apache && groupmod -g ${GROUP_ID} apache 59 | 60 | # sudo command without password 61 | RUN echo "apache ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 62 | RUN composer config --global process-timeout 6000 63 | 64 | RUN sed -i "s#{USER_ID}#${USER_ID}#g" /docker-entrypoint.sh 65 | RUN sed -i "s#{GROUP_ID}#${GROUP_ID}#g" /docker-entrypoint.sh 66 | 67 | ## apache2 permission issue 68 | RUN usermod --home /home apache 69 | RUN touch /env 70 | RUN chown -R apache:apache /env 71 | RUN chown -R apache:apache /home 72 | RUN chown -R apache:apache /var/preview/ 73 | RUN chown -R apache:apache /usr/sbin/httpd 74 | RUN chown -R apache:apache /etc/service/apache 75 | RUN chown -R apache:apache /sbin/ 76 | RUN chown -R apache:apache /etc/service/ 77 | RUN chown -R apache:apache /var/run/apache2 78 | RUN chown -R apache:apache /etc/apache2 79 | RUN chown -R apache:apache /var/log/apache2 80 | ARG INSTALL_ADDITIONAL_EXTENSIONS 81 | ENV INSTALL_ADDITIONAL_EXTENSIONS=$INSTALL_ADDITIONAL_EXTENSIONS 82 | RUN if [ -z "$INSTALL_ADDITIONAL_EXTENSIONS" ] ; then \ 83 | echo "No additional PHP extensions added" \ 84 | ;else \ 85 | bash /package.sh \ 86 | ;fi 87 | USER apache 88 | CMD /docker-entrypoint.sh & /sbin/runit-wrapper 89 | -------------------------------------------------------------------------------- /laravel/apache/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set +x 3 | if [[ $(curl -Is https://laravel.com | head -n 1 | cut -d ' ' -f 2 ) == "200" ]]; then 4 | if [[ -f "/var/www/composer.json" ]] ; 5 | then 6 | cd /var/www/ 7 | if [[ -d "/var/www/vendor" ]] ; 8 | then 9 | echo "Steps to use Composer optimise autoloader" 10 | sudo composer update --prefer-dist --no-interaction --optimize-autoloader --no-dev 11 | echo "Steps to Clear All Development inputs" 12 | sudo php artisan view:clear 13 | sudo php artisan route:clear 14 | sudo php artisan config:clear 15 | sudo php artisan clear-compiled 16 | else 17 | echo "If composer vendor folder is not installed follow the below steps" 18 | sudo composer install --prefer-dist --no-interaction --optimize-autoloader --no-dev 19 | fi 20 | 21 | fi 22 | if [[ "$(ls -A "/var/www/")" ]] ; 23 | then 24 | echo "If the Directory is not empty, please delete the hidden files and directory" 25 | else 26 | sudo composer config --global process-timeout 6000 27 | sudo composer create-project --prefer-dist laravel/laravel:^{LARAVEL_VERSION}.0 . 28 | if [ $? != 0 ]; then 29 | sh /docker-entrypoint.sh 30 | fi 31 | fi 32 | echo "Steps to check application environment variable" 33 | if [[ ! -f ".env" ]] ; 34 | then 35 | echo ".env file not found" 36 | sudo cp .env.example .env 37 | else 38 | echo ".env file exit" 39 | fi 40 | sudo cp /app/httpd.conf /etc/apache2/httpd.conf 41 | httpd -k graceful 42 | sudo chown -R apache:apache /var/www 2> /dev/null 43 | rm -rf /var/preview 2> /dev/null 44 | 45 | sudo php artisan key:generate 46 | 47 | exec "$@" 48 | 49 | else 50 | echo "Internet not working check your Internet connection or network"; 51 | fi -------------------------------------------------------------------------------- /laravel/apache/httpd.conf: -------------------------------------------------------------------------------- 1 | # 2 | # This is the main Apache HTTP server configuration file. It contains the 3 | # configuration directives that give the server its instructions. 4 | # See for detailed information. 5 | # In particular, see 6 | # 7 | # for a discussion of each configuration directive. 8 | # 9 | # Do NOT simply read the instructions in here without understanding 10 | # what they do. They're here only as hints or reminders. If you are unsure 11 | # consult the online docs. You have been warned. 12 | # 13 | # Configuration and logfile names: If the filenames you specify for many 14 | # of the server's control files begin with "/" (or "drive:/" for Win32), the 15 | # server will use that explicit path. If the filenames do *not* begin 16 | # with "/", the value of ServerRoot is prepended -- so "logs/access_log" 17 | # with ServerRoot set to "/usr/local/apache2" will be interpreted by the 18 | # server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log" 19 | # will be interpreted as '/logs/access_log'. 20 | 21 | # 22 | # ServerTokens 23 | # This directive configures what you return as the Server HTTP response 24 | # Header. The default is 'Full' which sends information about the OS-Type 25 | # and compiled in modules. 26 | # Set to one of: Full | OS | Minor | Minimal | Major | Prod 27 | # where Full conveys the most information, and Prod the least. 28 | # 29 | ServerTokens OS 30 | 31 | # 32 | # ServerRoot: The top of the directory tree under which the server's 33 | # configuration, error, and log files are kept. 34 | # 35 | # Do not add a slash at the end of the directory path. If you point 36 | # ServerRoot at a non-local disk, be sure to specify a local disk on the 37 | # Mutex directive, if file-based mutexes are used. If you wish to share the 38 | # same ServerRoot for multiple httpd daemons, you will need to change at 39 | # least PidFile. 40 | # 41 | ServerRoot {SERVER_ROOT} 42 | 43 | # 44 | # Mutex: Allows you to set the mutex mechanism and mutex file directory 45 | # for individual mutexes, or change the global defaults 46 | # 47 | # Uncomment and change the directory if mutexes are file-based and the default 48 | # mutex file directory is not on a local disk or is not appropriate for some 49 | # other reason. 50 | # 51 | # Mutex default:/run/apache2 52 | 53 | # 54 | # Listen: Allows you to bind Apache to specific IP addresses and/or 55 | # ports, instead of the default. See also the 56 | # directive. 57 | # 58 | # Change this to Listen on specific IP addresses as shown below to 59 | # prevent Apache from glomming onto all bound IP addresses. 60 | # 61 | #Listen 12.34.56.78:80 62 | Listen 80 63 | 64 | # 65 | # Dynamic Shared Object (DSO) Support 66 | # 67 | # To be able to use the functionality of a module which was built as a DSO you 68 | # have to place corresponding `LoadModule' lines at this location so the 69 | # directives contained in it are actually available _before_ they are used. 70 | # Statically compiled modules (those listed by `httpd -l') do not need 71 | # to be loaded here. 72 | # 73 | # Example: 74 | # LoadModule foo_module /usr/lib/apache2/mod_foo.so 75 | # 76 | #LoadModule mpm_event_module /usr/lib/apache2/mod_mpm_event.so 77 | LoadModule mpm_prefork_module /usr/lib/apache2/mod_mpm_prefork.so 78 | #LoadModule mpm_worker_module /usr/lib/apache2/mod_mpm_worker.so 79 | LoadModule authn_file_module /usr/lib/apache2/mod_authn_file.so 80 | #LoadModule authn_dbm_module /usr/lib/apache2/mod_authn_dbm.so 81 | #LoadModule authn_anon_module /usr/lib/apache2/mod_authn_anon.so 82 | #LoadModule authn_dbd_module /usr/lib/apache2/mod_authn_dbd.so 83 | #LoadModule authn_socache_module /usr/lib/apache2/mod_authn_socache.so 84 | LoadModule authn_core_module /usr/lib/apache2/mod_authn_core.so 85 | LoadModule authz_host_module /usr/lib/apache2/mod_authz_host.so 86 | LoadModule authz_groupfile_module /usr/lib/apache2/mod_authz_groupfile.so 87 | LoadModule authz_user_module /usr/lib/apache2/mod_authz_user.so 88 | #LoadModule authz_dbm_module /usr/lib/apache2/mod_authz_dbm.so 89 | #LoadModule authz_owner_module /usr/lib/apache2/mod_authz_owner.so 90 | #LoadModule authz_dbd_module /usr/lib/apache2/mod_authz_dbd.so 91 | LoadModule authz_core_module /usr/lib/apache2/mod_authz_core.so 92 | LoadModule access_compat_module /usr/lib/apache2/mod_access_compat.so 93 | LoadModule auth_basic_module /usr/lib/apache2/mod_auth_basic.so 94 | #LoadModule auth_form_module /usr/lib/apache2/mod_auth_form.so 95 | #LoadModule auth_digest_module /usr/lib/apache2/mod_auth_digest.so 96 | #LoadModule allowmethods_module /usr/lib/apache2/mod_allowmethods.so 97 | #LoadModule file_cache_module /usr/lib/apache2/mod_file_cache.so 98 | #LoadModule cache_module /usr/lib/apache2/mod_cache.so 99 | #LoadModule cache_disk_module /usr/lib/apache2/mod_cache_disk.so 100 | #LoadModule cache_socache_module /usr/lib/apache2/mod_cache_socache.so 101 | #LoadModule socache_shmcb_module /usr/lib/apache2/mod_socache_shmcb.so 102 | #LoadModule socache_dbm_module /usr/lib/apache2/mod_socache_dbm.so 103 | #LoadModule socache_memcache_module /usr/lib/apache2/mod_socache_memcache.so 104 | #LoadModule socache_redis_module /usr/lib/apache2/mod_socache_redis.so 105 | #LoadModule watchdog_module /usr/lib/apache2/mod_watchdog.so 106 | #LoadModule macro_module /usr/lib/apache2/mod_macro.so 107 | #LoadModule dbd_module /usr/lib/apache2/mod_dbd.so 108 | #LoadModule dumpio_module /usr/lib/apache2/mod_dumpio.so 109 | #LoadModule echo_module /usr/lib/apache2/mod_echo.so 110 | #LoadModule buffer_module /usr/lib/apache2/mod_buffer.so 111 | #LoadModule data_module /usr/lib/apache2/mod_data.so 112 | #LoadModule ratelimit_module /usr/lib/apache2/mod_ratelimit.so 113 | LoadModule reqtimeout_module /usr/lib/apache2/mod_reqtimeout.so 114 | #LoadModule ext_filter_module /usr/lib/apache2/mod_ext_filter.so 115 | #LoadModule request_module /usr/lib/apache2/mod_request.so 116 | #LoadModule include_module /usr/lib/apache2/mod_include.so 117 | LoadModule filter_module /usr/lib/apache2/mod_filter.so 118 | #LoadModule reflector_module /usr/lib/apache2/mod_reflector.so 119 | #LoadModule substitute_module /usr/lib/apache2/mod_substitute.so 120 | #LoadModule sed_module /usr/lib/apache2/mod_sed.so 121 | #LoadModule charset_lite_module /usr/lib/apache2/mod_charset_lite.so 122 | #LoadModule deflate_module /usr/lib/apache2/mod_deflate.so 123 | LoadModule mime_module /usr/lib/apache2/mod_mime.so 124 | LoadModule log_config_module /usr/lib/apache2/mod_log_config.so 125 | #LoadModule log_debug_module /usr/lib/apache2/mod_log_debug.so 126 | #LoadModule log_forensic_module /usr/lib/apache2/mod_log_forensic.so 127 | #LoadModule logio_module /usr/lib/apache2/mod_logio.so 128 | LoadModule env_module /usr/lib/apache2/mod_env.so 129 | #LoadModule mime_magic_module /usr/lib/apache2/mod_mime_magic.so 130 | #LoadModule expires_module /usr/lib/apache2/mod_expires.so 131 | LoadModule headers_module /usr/lib/apache2/mod_headers.so 132 | #LoadModule usertrack_module /usr/lib/apache2/mod_usertrack.so 133 | #LoadModule unique_id_module /usr/lib/apache2/mod_unique_id.so 134 | LoadModule setenvif_module /usr/lib/apache2/mod_setenvif.so 135 | LoadModule version_module /usr/lib/apache2/mod_version.so 136 | #LoadModule remoteip_module /usr/lib/apache2/mod_remoteip.so 137 | #LoadModule session_module /usr/lib/apache2/mod_session.so 138 | #LoadModule session_cookie_module /usr/lib/apache2/mod_session_cookie.so 139 | #LoadModule session_crypto_module /usr/lib/apache2/mod_session_crypto.so 140 | #LoadModule session_dbd_module /usr/lib/apache2/mod_session_dbd.so 141 | #LoadModule slotmem_shm_module /usr/lib/apache2/mod_slotmem_shm.so 142 | #LoadModule slotmem_plain_module /usr/lib/apache2/mod_slotmem_plain.so 143 | #LoadModule dialup_module /usr/lib/apache2/mod_dialup.so 144 | #LoadModule http2_module /usr/lib/apache2/mod_http2.so 145 | LoadModule unixd_module /usr/lib/apache2/mod_unixd.so 146 | #LoadModule heartbeat_module /usr/lib/apache2/mod_heartbeat.so 147 | #LoadModule heartmonitor_module /usr/lib/apache2/mod_heartmonitor.so 148 | LoadModule status_module /usr/lib/apache2/mod_status.so 149 | LoadModule autoindex_module /usr/lib/apache2/mod_autoindex.so 150 | #LoadModule asis_module /usr/lib/apache2/mod_asis.so 151 | #LoadModule info_module /usr/lib/apache2/mod_info.so 152 | #LoadModule suexec_module /usr/lib/apache2/mod_suexec.so 153 | 154 | #LoadModule cgid_module /usr/lib/apache2/mod_cgid.so 155 | 156 | 157 | #LoadModule cgi_module /usr/lib/apache2/mod_cgi.so 158 | 159 | #LoadModule vhost_alias_module /usr/lib/apache2/mod_vhost_alias.so 160 | #LoadModule negotiation_module /usr/lib/apache2/mod_negotiation.so 161 | LoadModule dir_module /usr/lib/apache2/mod_dir.so 162 | #LoadModule actions_module /usr/lib/apache2/mod_actions.so 163 | #LoadModule speling_module /usr/lib/apache2/mod_speling.so 164 | #LoadModule userdir_module /usr/lib/apache2/mod_userdir.so 165 | LoadModule alias_module /usr/lib/apache2/mod_alias.so 166 | LoadModule rewrite_module /usr/lib/apache2/mod_rewrite.so 167 | 168 | LoadModule negotiation_module /usr/lib/apache2/mod_negotiation.so 169 | 170 | 171 | # 172 | # If you wish httpd to run as a different user or group, you must run 173 | # httpd as root initially and it will switch. 174 | # 175 | # User/Group: The name (or #number) of the user/group to run httpd as. 176 | # It is usually good practice to create a dedicated user and group for 177 | # running httpd, as with most system services. 178 | # 179 | User apache 180 | Group apache 181 | 182 | 183 | 184 | # 'Main' server configuration 185 | # 186 | # The directives in this section set up the values used by the 'main' 187 | # server, which responds to any requests that aren't handled by a 188 | # definition. These values also provide defaults for 189 | # any containers you may define later in the file. 190 | # 191 | # All of these directives may appear inside containers, 192 | # in which case these default settings will be overridden for the 193 | # virtual host being defined. 194 | # 195 | 196 | # 197 | # ServerAdmin: Your address, where problems with the server should be 198 | # e-mailed. This address appears on some server-generated pages, such 199 | # as error documents. e.g. admin@your-domain.com 200 | # 201 | ServerAdmin you@example.com 202 | 203 | # 204 | # Optionally add a line containing the server version and virtual host 205 | # name to server-generated pages (internal error documents, FTP directory 206 | # listings, mod_status and mod_info output etc., but not CGI generated 207 | # documents or custom error documents). 208 | # Set to "EMail" to also include a mailto: link to the ServerAdmin. 209 | # Set to one of: On | Off | EMail 210 | # 211 | ServerSignature On 212 | 213 | # 214 | # ServerName gives the name and port that the server uses to identify itself. 215 | # This can often be determined automatically, but we recommend you specify 216 | # it explicitly to prevent problems during startup. 217 | # 218 | # If your host doesn't have a registered DNS name, enter its IP address here. 219 | # 220 | ServerName localhost:80 221 | 222 | # 223 | # Deny access to the entirety of your server's filesystem. You must 224 | # explicitly permit access to web content directories in other 225 | # blocks below. 226 | # 227 | 228 | AllowOverride All 229 | Require all denied 230 | 231 | 232 | # 233 | # Note that from this point forward you must specifically allow 234 | # particular features to be enabled - so if something's not working as 235 | # you might expect, make sure that you have specifically enabled it 236 | # below. 237 | # 238 | 239 | # 240 | # DocumentRoot: The directory out of which you will serve your 241 | # documents. By default, all requests are taken from this directory, but 242 | # symbolic links and aliases may be used to point to other locations. 243 | # 244 | DocumentRoot {SERVER_ROOT} 245 | 246 | # 247 | # Possible values for the Options directive are "None", "All", 248 | # or any combination of: 249 | # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews 250 | # 251 | # Note that "MultiViews" must be named *explicitly* --- "Options All" 252 | # doesn't give it to you. 253 | # 254 | # The Options directive is both complicated and important. Please see 255 | # http://httpd.apache.org/docs/2.4/mod/core.html#options 256 | # for more information. 257 | # 258 | Options Indexes FollowSymLinks 259 | 260 | # 261 | # AllowOverride controls what directives may be placed in .htaccess files. 262 | # It can be "All", "None", or any combination of the keywords: 263 | # AllowOverride FileInfo AuthConfig Limit 264 | # 265 | AllowOverride All 266 | 267 | # 268 | # Controls who can get stuff from this server. 269 | # 270 | Require all granted 271 | 272 | 273 | # 274 | # DirectoryIndex: sets the file that Apache will serve if a directory 275 | # is requested. 276 | # 277 | 278 | DirectoryIndex index.html 279 | 280 | 281 | # 282 | # The following lines prevent .htaccess and .htpasswd files from being 283 | # viewed by Web clients. 284 | # 285 | 286 | Require all denied 287 | 288 | 289 | # 290 | # ErrorLog: The location of the error log file. 291 | # If you do not specify an ErrorLog directive within a 292 | # container, error messages relating to that virtual host will be 293 | # logged here. If you *do* define an error logfile for a 294 | # container, that host's errors will be logged there and not here. 295 | # 296 | ErrorLog /var/log/apache2/error.log 297 | 298 | # 299 | # LogLevel: Control the number of messages logged to the error_log. 300 | # Possible values include: debug, info, notice, warn, error, crit, 301 | # alert, emerg. 302 | # 303 | LogLevel warn 304 | 305 | 306 | # 307 | # The following directives define some format nicknames for use with 308 | # a CustomLog directive (see below). 309 | # 310 | LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 311 | LogFormat "%h %l %u %t \"%r\" %>s %b" common 312 | 313 | 314 | # You need to enable mod_logio.c to use %I and %O 315 | LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 316 | 317 | 318 | # 319 | # The location and format of the access logfile (Common Logfile Format). 320 | # If you do not define any access logfiles within a 321 | # container, they will be logged here. Contrariwise, if you *do* 322 | # define per- access logfiles, transactions will be 323 | # logged therein and *not* in this file. 324 | # 325 | #CustomLog logs/access.log common 326 | 327 | # 328 | # If you prefer a logfile with access, agent, and referer information 329 | # (Combined Logfile Format) you can use the following directive. 330 | # 331 | CustomLog /var/log/apache2/access.log combined 332 | 333 | 334 | 335 | # 336 | # Redirect: Allows you to tell clients about documents that used to 337 | # exist in your server's namespace, but do not anymore. The client 338 | # will make a new request for the document at its new location. 339 | # Example: 340 | # Redirect permanent /foo http://www.example.com/bar 341 | 342 | # 343 | # Alias: Maps web paths into filesystem paths and is used to 344 | # access content that does not live under the DocumentRoot. 345 | # Example: 346 | # Alias /webpath /full/filesystem/path 347 | # 348 | # If you include a trailing / on /webpath then the server will 349 | # require it to be present in the URL. You will also likely 350 | # need to provide a section to allow access to 351 | # the filesystem path. 352 | 353 | # 354 | # ScriptAlias: This controls which directories contain server scripts. 355 | # ScriptAliases are essentially the same as Aliases, except that 356 | # documents in the target directory are treated as applications and 357 | # run by the server when requested rather than as documents sent to the 358 | # client. The same rules about trailing "/" apply to ScriptAlias 359 | # directives as to Alias. 360 | # 361 | ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 362 | 363 | 364 | 365 | 366 | # 367 | # ScriptSock: On threaded servers, designate the path to the UNIX 368 | # socket used to communicate with the CGI daemon of mod_cgid. 369 | # 370 | #Scriptsock cgisock 371 | 372 | 373 | # 374 | # "/var/www/localhost/cgi-bin" should be changed to whatever your ScriptAliased 375 | # CGI directory exists, if you have that configured. 376 | # 377 | 378 | AllowOverride All 379 | Options None 380 | Require all granted 381 | 382 | 383 | 384 | # 385 | # Avoid passing HTTP_PROXY environment to CGI's on this or any proxied 386 | # backend servers which have lingering "httpoxy" defects. 387 | # 'Proxy' request header is undefined by the IETF, not listed by IANA 388 | # 389 | RequestHeader unset Proxy early 390 | 391 | 392 | 393 | # 394 | # TypesConfig points to the file containing the list of mappings from 395 | # filename extension to MIME-type. 396 | # 397 | TypesConfig /etc/apache2/mime.types 398 | 399 | # 400 | # AddType allows you to add to or override the MIME configuration 401 | # file specified in TypesConfig for specific file types. 402 | # 403 | #AddType application/x-gzip .tgz 404 | # 405 | # AddEncoding allows you to have certain browsers uncompress 406 | # information on the fly. Note: Not all browsers support this. 407 | # 408 | #AddEncoding x-compress .Z 409 | #AddEncoding x-gzip .gz .tgz 410 | # 411 | # If the AddEncoding directives above are commented-out, then you 412 | # probably should define those extensions to indicate media types: 413 | # 414 | AddType application/x-compress .Z 415 | AddType application/x-gzip .gz .tgz 416 | 417 | # 418 | # AddHandler allows you to map certain file extensions to "handlers": 419 | # actions unrelated to filetype. These can be either built into the server 420 | # or added with the Action directive (see below) 421 | # 422 | # To use CGI scripts outside of ScriptAliased directories: 423 | # (You will also need to add "ExecCGI" to the "Options" directive.) 424 | # 425 | #AddHandler cgi-script .cgi 426 | 427 | # For type maps (negotiated resources): 428 | #AddHandler type-map var 429 | 430 | # 431 | # Filters allow you to process content before it is sent to the client. 432 | # 433 | # To parse .shtml files for server-side includes (SSI): 434 | # (You will also need to add "Includes" to the "Options" directive.) 435 | # 436 | #AddType text/html .shtml 437 | #AddOutputFilter INCLUDES .shtml 438 | 439 | 440 | # 441 | # The mod_mime_magic module allows the server to use various hints from the 442 | # contents of the file itself to determine its type. The MIMEMagicFile 443 | # directive tells the module where the hint definitions are located. 444 | # 445 | 446 | MIMEMagicFile /etc/apache2/magic 447 | 448 | 449 | # 450 | # Customizable error responses come in three flavors: 451 | # 1) plain text 2) local redirects 3) external redirects 452 | # 453 | # Some examples: 454 | #ErrorDocument 500 "The server made a boo boo." 455 | #ErrorDocument 404 /missing.html 456 | #ErrorDocument 404 "/cgi-bin/missing_handler.pl" 457 | #ErrorDocument 402 http://www.example.com/subscription_info.html 458 | # 459 | 460 | # 461 | # MaxRanges: Maximum number of Ranges in a request before 462 | # returning the entire resource, or one of the special 463 | # values 'default', 'none' or 'unlimited'. 464 | # Default setting is to accept 200 Ranges. 465 | #MaxRanges unlimited 466 | 467 | # 468 | # EnableMMAP and EnableSendfile: On systems that support it, 469 | # memory-mapping or the sendfile syscall may be used to deliver 470 | # files. This usually improves server performance, but must 471 | # be turned off when serving from networked-mounted 472 | # filesystems or if support for these functions is otherwise 473 | # broken on your system. 474 | # Defaults: EnableMMAP On, EnableSendfile Off 475 | # 476 | #EnableMMAP off 477 | #EnableSendfile on 478 | 479 | # Load config files from the config directory "/etc/apache2/conf.d". 480 | # 481 | IncludeOptional /etc/apache2/conf.d/*.conf -------------------------------------------------------------------------------- /laravel/apache/package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | word=$(echo -n "$INSTALL_ADDITIONAL_EXTENSIONS" | wc -w) 3 | for (( n=1; n<=$word; n++ )) 4 | do 5 | SERVER_ARRAY=`echo ${INSTALL_ADDITIONAL_EXTENSIONS} | awk '{print $'$n'}' | sed 's/.*-//'` 6 | sudo apk add --no-cache php${PHP_VERSION}-`echo ${SERVER_ARRAY}` 7 | done -------------------------------------------------------------------------------- /laravel/nginx/Dockerfile-7.4: -------------------------------------------------------------------------------- 1 | ARG BACK_END 2 | FROM ghcr.io/deck-app/nginx:v7.4 3 | LABEL maintainer Naba Das 4 | 5 | ARG LARAVEL_VERSION 6 | RUN mkdir -p /app 7 | RUN mkdir -p /var/preview 8 | COPY default.conf /app/default.conf 9 | COPY default.conf /etc/nginx/conf.d/default.conf 10 | RUN wget -O /var/preview/index.html https://raw.githubusercontent.com/deck-app/stack-preview-screen/main/install/index.html 11 | 12 | ARG SERVER_ROOT 13 | RUN sed -i "s#{SERVER_ROOT}#/var/preview#g" /etc/nginx/conf.d/default.conf 14 | RUN sed -i "s#{SERVER_ROOT}#/var/www/public#g" /app/default.conf 15 | 16 | 17 | # Persistent runtime dependencies 18 | # Example RUN apk add --no-cache php7-openssl php7-sysvmsg php7-curl 19 | 20 | WORKDIR /var/www 21 | ENV PHP_VERSION=7 22 | ADD package.sh /package.sh 23 | 24 | COPY php.ini /etc/php${PHP_VERSION}/php.ini 25 | ARG DISPLAY_PHPERROR 26 | RUN if [ ${DISPLAY_PHPERROR} = true ]; then \ 27 | sed -i "s#{DISPLAY}#On#g" /etc/php${PHP_VERSION}/php.ini \ 28 | ;else \ 29 | sed -i "s#{DISPLAY}#Off#g" /etc/php${PHP_VERSION}/php.ini \ 30 | ;fi 31 | 32 | #Xdebug enable or disable 33 | ARG XDEBUG 34 | RUN if [ ${XDEBUG} = true ]; then \ 35 | apk add php${PHP_VERSION}-pecl-xdebug \ 36 | && echo "[xdebug]" >> /etc/php${PHP_VERSION}/php.ini \ 37 | && echo "zend_extension = xdebug" >> /etc/php${PHP_VERSION}/php.ini \ 38 | && echo "xdebug.mode = debug" >> /etc/php${PHP_VERSION}/php.ini \ 39 | && echo "xdebug.remote_autostart = 0" >> /etc/php${PHP_VERSION}/php.ini \ 40 | && echo "xdebug.remote_enable = 1" >> /etc/php${PHP_VERSION}/php.ini \ 41 | && echo "xdebug.log_level = 0" >> /etc/php${PHP_VERSION}/php.ini \ 42 | && echo "xdebug.discover_client_host = 1" >> /etc/php${PHP_VERSION}/php.ini \ 43 | && echo "xdebug.client_host = host.docker.internal" >> /etc/php${PHP_VERSION}/php.ini \ 44 | && echo "xdebug.start_with_request = yes" >> /etc/php${PHP_VERSION}/php.ini \ 45 | ;fi 46 | 47 | RUN apk add php${PHP_VERSION}-zip php${PHP_VERSION}-pdo_mysql php${PHP_VERSION}-gd 48 | RUN apk add zip nano 49 | ARG LARAVEL_VERSION 50 | COPY docker-entrypoint.sh /docker-entrypoint.sh 51 | RUN sed -i "s#{LARAVEL_VERSION}#${LARAVEL_VERSION}#g" /docker-entrypoint.sh 52 | RUN chmod +x /docker-entrypoint.sh 53 | 54 | ## Linux permission issue 55 | ARG USER_ID 56 | ARG GROUP_ID 57 | RUN apk --no-cache add shadow sudo 58 | RUN usermod -u ${USER_ID} nobody && groupmod -g ${GROUP_ID} nobody 59 | 60 | # sudo command without password 61 | RUN echo "nobody ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 62 | RUN composer config --global process-timeout 6000 63 | 64 | RUN sed -i "s#{USER_ID}#${USER_ID}#g" /docker-entrypoint.sh 65 | RUN sed -i "s#{GROUP_ID}#${GROUP_ID}#g" /docker-entrypoint.sh 66 | RUN sed -i "s#{BACK_END}#${BACK_END}#g" /docker-entrypoint.sh 67 | 68 | ## nobody permission issue 69 | RUN usermod --home /home nobody 70 | COPY www.conf /etc/php${PHP_VERSION}/php-fpm.d/www.conf 71 | COPY nginx.conf /etc/nginx/nginx.conf 72 | RUN touch /env 73 | RUN chown -R nobody:nobody /env 74 | RUN chown -R nobody:nobody /home 75 | RUN chown -R nobody:nobody /sbin/ 76 | RUN chown -R nobody:nobody /var/preview/ 77 | RUN chown -R nobody:nobody /etc/php${PHP_VERSION}/ 78 | RUN chown -R nobody:nobody /etc/service/ 79 | RUN chown -R nobody:nobody /var/run/ 80 | RUN chown -R nobody:nobody /var/log/ 81 | RUN chown -R nobody:nobody /var/lib/nginx 82 | RUN chown -R nobody:nobody /etc/nginx 83 | ARG INSTALL_ADDITIONAL_EXTENSIONS 84 | ENV INSTALL_ADDITIONAL_EXTENSIONS=$INSTALL_ADDITIONAL_EXTENSIONS 85 | RUN if [ -z "$INSTALL_ADDITIONAL_EXTENSIONS" ] ; then \ 86 | echo "No additional PHP extensions added" \ 87 | ;else \ 88 | bash /package.sh \ 89 | ;fi 90 | USER nobody 91 | CMD /docker-entrypoint.sh & /sbin/runit-wrapper -------------------------------------------------------------------------------- /laravel/nginx/Dockerfile-8.0: -------------------------------------------------------------------------------- 1 | ARG BACK_END 2 | FROM ghcr.io/deck-app/nginx:v8.0 3 | LABEL maintainer Naba Das 4 | 5 | ARG LARAVEL_VERSION 6 | RUN mkdir -p /app 7 | RUN mkdir -p /var/preview 8 | COPY default.conf /app/default.conf 9 | COPY default.conf /etc/nginx/conf.d/default.conf 10 | RUN wget -O /var/preview/index.html https://raw.githubusercontent.com/deck-app/stack-preview-screen/main/install/index.html 11 | 12 | ARG SERVER_ROOT 13 | RUN sed -i "s#{SERVER_ROOT}#/var/preview#g" /etc/nginx/conf.d/default.conf 14 | RUN sed -i "s#{SERVER_ROOT}#/var/www/public#g" /app/default.conf 15 | 16 | 17 | # Persistent runtime dependencies 18 | # Example RUN apk add --no-cache php8-openssl php8-sysvmsg php8-curl 19 | 20 | WORKDIR /var/www 21 | ENV PHP_VERSION=8 22 | ADD package.sh /package.sh 23 | 24 | COPY php.ini /etc/php${PHP_VERSION}/php.ini 25 | ARG DISPLAY_PHPERROR 26 | RUN if [ ${DISPLAY_PHPERROR} = true ]; then \ 27 | sed -i "s#{DISPLAY}#On#g" /etc/php${PHP_VERSION}/php.ini \ 28 | ;else \ 29 | sed -i "s#{DISPLAY}#Off#g" /etc/php${PHP_VERSION}/php.ini \ 30 | ;fi 31 | 32 | #Xdebug enable or disable 33 | ARG XDEBUG 34 | RUN if [ ${XDEBUG} = true ]; then \ 35 | apk add php${PHP_VERSION}-pecl-xdebug \ 36 | && echo "[xdebug]" >> /etc/php${PHP_VERSION}/php.ini \ 37 | && echo "zend_extension = xdebug" >> /etc/php${PHP_VERSION}/php.ini \ 38 | && echo "xdebug.mode = debug" >> /etc/php${PHP_VERSION}/php.ini \ 39 | && echo "xdebug.remote_autostart = 0" >> /etc/php${PHP_VERSION}/php.ini \ 40 | && echo "xdebug.remote_enable = 1" >> /etc/php${PHP_VERSION}/php.ini \ 41 | && echo "xdebug.log_level = 0" >> /etc/php${PHP_VERSION}/php.ini \ 42 | && echo "xdebug.discover_client_host = 1" >> /etc/php${PHP_VERSION}/php.ini \ 43 | && echo "xdebug.client_host = host.docker.internal" >> /etc/php${PHP_VERSION}/php.ini \ 44 | && echo "xdebug.start_with_request = yes" >> /etc/php${PHP_VERSION}/php.ini \ 45 | ;fi 46 | 47 | RUN apk add php${PHP_VERSION}-zip php${PHP_VERSION}-pdo_mysql php${PHP_VERSION}-gd 48 | RUN apk add zip nano 49 | ARG LARAVEL_VERSION 50 | COPY docker-entrypoint.sh /docker-entrypoint.sh 51 | RUN sed -i "s#{LARAVEL_VERSION}#${LARAVEL_VERSION}#g" /docker-entrypoint.sh 52 | RUN chmod +x /docker-entrypoint.sh 53 | 54 | ## Linux permission issue 55 | ARG USER_ID 56 | ARG GROUP_ID 57 | RUN apk --no-cache add shadow sudo 58 | RUN usermod -u ${USER_ID} nobody && groupmod -g ${GROUP_ID} nobody 59 | 60 | # sudo command without password 61 | RUN echo "nobody ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 62 | RUN composer config --global process-timeout 6000 63 | 64 | RUN sed -i "s#{USER_ID}#${USER_ID}#g" /docker-entrypoint.sh 65 | RUN sed -i "s#{GROUP_ID}#${GROUP_ID}#g" /docker-entrypoint.sh 66 | RUN sed -i "s#{BACK_END}#${BACK_END}#g" /docker-entrypoint.sh 67 | 68 | ## nobody permission issue 69 | RUN usermod --home /home nobody 70 | COPY www.conf /etc/php${PHP_VERSION}/php-fpm.d/www.conf 71 | COPY nginx.conf /etc/nginx/nginx.conf 72 | RUN touch /env 73 | RUN chown -R nobody:nobody /env 74 | RUN chown -R nobody:nobody /home 75 | RUN chown -R nobody:nobody /var/preview/ 76 | RUN chown -R nobody:nobody /sbin/ 77 | RUN chown -R nobody:nobody /etc/php${PHP_VERSION}/ 78 | RUN chown -R nobody:nobody /etc/service/ 79 | RUN chown -R nobody:nobody /var/run/ 80 | RUN chown -R nobody:nobody /var/log/ 81 | RUN chown -R nobody:nobody /var/lib/nginx 82 | RUN chown -R nobody:nobody /etc/nginx 83 | ARG INSTALL_ADDITIONAL_EXTENSIONS 84 | ENV INSTALL_ADDITIONAL_EXTENSIONS=$INSTALL_ADDITIONAL_EXTENSIONS 85 | RUN if [ -z "$INSTALL_ADDITIONAL_EXTENSIONS" ] ; then \ 86 | echo "No additional PHP extensions added" \ 87 | ;else \ 88 | bash /package.sh \ 89 | ;fi 90 | USER nobody 91 | CMD /docker-entrypoint.sh & /sbin/runit-wrapper -------------------------------------------------------------------------------- /laravel/nginx/Dockerfile-8.1: -------------------------------------------------------------------------------- 1 | ARG BACK_END 2 | FROM ghcr.io/deck-app/nginx:v8.1 3 | LABEL maintainer Naba Das 4 | 5 | ARG LARAVEL_VERSION 6 | RUN mkdir -p /app 7 | RUN mkdir -p /var/preview 8 | COPY default.conf /app/default.conf 9 | COPY default.conf /etc/nginx/conf.d/default.conf 10 | RUN wget -O /var/preview/index.html https://raw.githubusercontent.com/deck-app/stack-preview-screen/main/install/index.html 11 | 12 | ARG SERVER_ROOT 13 | RUN sed -i "s#{SERVER_ROOT}#/var/preview#g" /etc/nginx/conf.d/default.conf 14 | RUN sed -i "s#{SERVER_ROOT}#/var/www/public#g" /app/default.conf 15 | 16 | 17 | # Persistent runtime dependencies 18 | # Example RUN apk add --no-cache php81-openssl php81-sysvmsg php81-curl 19 | 20 | WORKDIR /var/www 21 | ENV PHP_VERSION=81 22 | ADD package.sh /package.sh 23 | 24 | COPY php.ini /etc/php${PHP_VERSION}/php.ini 25 | ARG DISPLAY_PHPERROR 26 | RUN if [ ${DISPLAY_PHPERROR} = true ]; then \ 27 | sed -i "s#{DISPLAY}#On#g" /etc/php${PHP_VERSION}/php.ini \ 28 | ;else \ 29 | sed -i "s#{DISPLAY}#Off#g" /etc/php${PHP_VERSION}/php.ini \ 30 | ;fi 31 | 32 | #Xdebug enable or disable 33 | ARG XDEBUG 34 | RUN if [ ${XDEBUG} = true ]; then \ 35 | apk add php${PHP_VERSION}-pecl-xdebug \ 36 | && echo "[xdebug]" >> /etc/php${PHP_VERSION}/php.ini \ 37 | && echo "zend_extension = xdebug" >> /etc/php${PHP_VERSION}/php.ini \ 38 | && echo "xdebug.mode = debug" >> /etc/php${PHP_VERSION}/php.ini \ 39 | && echo "xdebug.remote_autostart = 0" >> /etc/php${PHP_VERSION}/php.ini \ 40 | && echo "xdebug.remote_enable = 1" >> /etc/php${PHP_VERSION}/php.ini \ 41 | && echo "xdebug.log_level = 0" >> /etc/php${PHP_VERSION}/php.ini \ 42 | && echo "xdebug.discover_client_host = 1" >> /etc/php${PHP_VERSION}/php.ini \ 43 | && echo "xdebug.client_host = host.docker.internal" >> /etc/php${PHP_VERSION}/php.ini \ 44 | && echo "xdebug.start_with_request = yes" >> /etc/php${PHP_VERSION}/php.ini \ 45 | ;fi 46 | 47 | RUN apk add php${PHP_VERSION}-zip php${PHP_VERSION}-pdo_mysql php${PHP_VERSION}-gd 48 | RUN apk add zip nano 49 | ARG LARAVEL_VERSION 50 | COPY docker-entrypoint.sh /docker-entrypoint.sh 51 | RUN sed -i "s#{LARAVEL_VERSION}#${LARAVEL_VERSION}#g" /docker-entrypoint.sh 52 | RUN chmod +x /docker-entrypoint.sh 53 | 54 | ## Linux permission issue 55 | ARG USER_ID 56 | ARG GROUP_ID 57 | RUN apk --no-cache add shadow sudo 58 | RUN usermod -u ${USER_ID} nobody && groupmod -g ${GROUP_ID} nobody 59 | 60 | # sudo command without password 61 | RUN echo "nobody ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 62 | RUN composer config --global process-timeout 6000 63 | 64 | RUN sed -i "s#{USER_ID}#${USER_ID}#g" /docker-entrypoint.sh 65 | RUN sed -i "s#{GROUP_ID}#${GROUP_ID}#g" /docker-entrypoint.sh 66 | RUN sed -i "s#{BACK_END}#${BACK_END}#g" /docker-entrypoint.sh 67 | 68 | ## nobody permission issue 69 | RUN usermod --home /home nobody 70 | COPY www.conf /etc/php${PHP_VERSION}/php-fpm.d/www.conf 71 | COPY nginx.conf /etc/nginx/nginx.conf 72 | RUN touch /env 73 | RUN chown -R nobody:nobody /env 74 | RUN chown -R nobody:nobody /home 75 | RUN chown -R nobody:nobody /var/preview/ 76 | RUN chown -R nobody:nobody /sbin/ 77 | RUN chown -R nobody:nobody /etc/php${PHP_VERSION}/ 78 | RUN chown -R nobody:nobody /etc/service/ 79 | RUN chown -R nobody:nobody /var/run/ 80 | RUN chown -R nobody:nobody /var/log/ 81 | RUN chown -R nobody:nobody /var/lib/nginx 82 | RUN chown -R nobody:nobody /etc/nginx 83 | ARG INSTALL_ADDITIONAL_EXTENSIONS 84 | ENV INSTALL_ADDITIONAL_EXTENSIONS=$INSTALL_ADDITIONAL_EXTENSIONS 85 | RUN if [ -z "$INSTALL_ADDITIONAL_EXTENSIONS" ] ; then \ 86 | echo "No additional PHP extensions added" \ 87 | ;else \ 88 | bash /package.sh \ 89 | ;fi 90 | USER nobody 91 | CMD /docker-entrypoint.sh & /sbin/runit-wrapper -------------------------------------------------------------------------------- /laravel/nginx/Dockerfile-8.2: -------------------------------------------------------------------------------- 1 | ARG BACK_END 2 | FROM ghcr.io/deck-app/nginx:v8.2 3 | LABEL maintainer Naba Das 4 | 5 | ARG LARAVEL_VERSION 6 | RUN mkdir -p /app 7 | RUN mkdir -p /var/preview 8 | COPY default.conf /app/default.conf 9 | COPY default.conf /etc/nginx/conf.d/default.conf 10 | RUN wget -O /var/preview/index.html https://raw.githubusercontent.com/deck-app/stack-preview-screen/main/install/index.html 11 | 12 | ARG SERVER_ROOT 13 | RUN sed -i "s#{SERVER_ROOT}#/var/preview#g" /etc/nginx/conf.d/default.conf 14 | RUN sed -i "s#{SERVER_ROOT}#/var/www/public#g" /app/default.conf 15 | 16 | 17 | # Persistent runtime dependencies 18 | # Example RUN apk add --no-cache php82-openssl php82-sysvmsg php82-curl 19 | 20 | WORKDIR /var/www 21 | ENV PHP_VERSION=82 22 | ADD package.sh /package.sh 23 | 24 | COPY php.ini /etc/php${PHP_VERSION}/php.ini 25 | ARG DISPLAY_PHPERROR 26 | RUN if [ ${DISPLAY_PHPERROR} = true ]; then \ 27 | sed -i "s#{DISPLAY}#On#g" /etc/php${PHP_VERSION}/php.ini \ 28 | ;else \ 29 | sed -i "s#{DISPLAY}#Off#g" /etc/php${PHP_VERSION}/php.ini \ 30 | ;fi 31 | 32 | #Xdebug enable or disable 33 | ARG XDEBUG 34 | RUN if [ ${XDEBUG} = true ]; then \ 35 | apk add php${PHP_VERSION}-pecl-xdebug \ 36 | && echo "[xdebug]" >> /etc/php${PHP_VERSION}/php.ini \ 37 | && echo "zend_extension = xdebug" >> /etc/php${PHP_VERSION}/php.ini \ 38 | && echo "xdebug.mode = debug" >> /etc/php${PHP_VERSION}/php.ini \ 39 | && echo "xdebug.remote_autostart = 0" >> /etc/php${PHP_VERSION}/php.ini \ 40 | && echo "xdebug.remote_enable = 1" >> /etc/php${PHP_VERSION}/php.ini \ 41 | && echo "xdebug.log_level = 0" >> /etc/php${PHP_VERSION}/php.ini \ 42 | && echo "xdebug.discover_client_host = 1" >> /etc/php${PHP_VERSION}/php.ini \ 43 | && echo "xdebug.client_host = host.docker.internal" >> /etc/php${PHP_VERSION}/php.ini \ 44 | && echo "xdebug.start_with_request = yes" >> /etc/php${PHP_VERSION}/php.ini \ 45 | ;fi 46 | 47 | RUN apk add php${PHP_VERSION}-zip php${PHP_VERSION}-pdo_mysql php${PHP_VERSION}-gd 48 | RUN apk add zip nano 49 | ARG LARAVEL_VERSION 50 | COPY docker-entrypoint.sh /docker-entrypoint.sh 51 | RUN sed -i "s#{LARAVEL_VERSION}#${LARAVEL_VERSION}#g" /docker-entrypoint.sh 52 | RUN chmod +x /docker-entrypoint.sh 53 | 54 | ## Linux permission issue 55 | ARG USER_ID 56 | ARG GROUP_ID 57 | RUN apk --no-cache add shadow sudo 58 | RUN usermod -u ${USER_ID} nobody && groupmod -g ${GROUP_ID} nobody 59 | 60 | # sudo command without password 61 | RUN echo "nobody ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 62 | RUN composer config --global process-timeout 6000 63 | 64 | RUN sed -i "s#{USER_ID}#${USER_ID}#g" /docker-entrypoint.sh 65 | RUN sed -i "s#{GROUP_ID}#${GROUP_ID}#g" /docker-entrypoint.sh 66 | RUN sed -i "s#{BACK_END}#${BACK_END}#g" /docker-entrypoint.sh 67 | 68 | ## nobody permission issue 69 | RUN usermod --home /home nobody 70 | COPY www.conf /etc/php${PHP_VERSION}/php-fpm.d/www.conf 71 | COPY nginx.conf /etc/nginx/nginx.conf 72 | RUN touch /env 73 | RUN chown -R nobody:nobody /env 74 | RUN chown -R nobody:nobody /home 75 | RUN chown -R nobody:nobody /var/preview/ 76 | RUN chown -R nobody:nobody /sbin/ 77 | RUN chown -R nobody:nobody /etc/php${PHP_VERSION}/ 78 | RUN chown -R nobody:nobody /etc/service/ 79 | RUN chown -R nobody:nobody /var/run/ 80 | RUN chown -R nobody:nobody /var/log/ 81 | RUN chown -R nobody:nobody /var/lib/nginx 82 | RUN chown -R nobody:nobody /etc/nginx 83 | ARG INSTALL_ADDITIONAL_EXTENSIONS 84 | ENV INSTALL_ADDITIONAL_EXTENSIONS=$INSTALL_ADDITIONAL_EXTENSIONS 85 | RUN if [ -z "$INSTALL_ADDITIONAL_EXTENSIONS" ] ; then \ 86 | echo "No additional PHP extensions added" \ 87 | ;else \ 88 | bash /package.sh \ 89 | ;fi 90 | USER nobody 91 | CMD /docker-entrypoint.sh & /sbin/runit-wrapper -------------------------------------------------------------------------------- /laravel/nginx/Dockerfile-8.3: -------------------------------------------------------------------------------- 1 | ARG BACK_END 2 | FROM ghcr.io/deck-app/nginx:v8.3 3 | LABEL maintainer Naba Das 4 | 5 | ARG LARAVEL_VERSION 6 | RUN mkdir -p /app 7 | RUN mkdir -p /var/preview 8 | COPY default.conf /app/default.conf 9 | COPY default.conf /etc/nginx/conf.d/default.conf 10 | RUN wget -O /var/preview/index.html https://raw.githubusercontent.com/deck-app/stack-preview-screen/main/install/index.html 11 | 12 | ARG SERVER_ROOT 13 | RUN sed -i "s#{SERVER_ROOT}#/var/preview#g" /etc/nginx/conf.d/default.conf 14 | RUN sed -i "s#{SERVER_ROOT}#/var/www/public#g" /app/default.conf 15 | 16 | 17 | # Persistent runtime dependencies 18 | # Example RUN apk add --no-cache php82-openssl php82-sysvmsg php82-curl 19 | 20 | WORKDIR /var/www 21 | ENV PHP_VERSION=83 22 | ADD package.sh /package.sh 23 | 24 | COPY php.ini /etc/php${PHP_VERSION}/php.ini 25 | ARG DISPLAY_PHPERROR 26 | RUN if [ ${DISPLAY_PHPERROR} = true ]; then \ 27 | sed -i "s#{DISPLAY}#On#g" /etc/php${PHP_VERSION}/php.ini \ 28 | ;else \ 29 | sed -i "s#{DISPLAY}#Off#g" /etc/php${PHP_VERSION}/php.ini \ 30 | ;fi 31 | 32 | #Xdebug enable or disable 33 | ARG XDEBUG 34 | RUN if [ ${XDEBUG} = true ]; then \ 35 | apk add php${PHP_VERSION}-pecl-xdebug \ 36 | && echo "[xdebug]" >> /etc/php${PHP_VERSION}/php.ini \ 37 | && echo "zend_extension = xdebug" >> /etc/php${PHP_VERSION}/php.ini \ 38 | && echo "xdebug.mode = debug" >> /etc/php${PHP_VERSION}/php.ini \ 39 | && echo "xdebug.remote_autostart = 0" >> /etc/php${PHP_VERSION}/php.ini \ 40 | && echo "xdebug.remote_enable = 1" >> /etc/php${PHP_VERSION}/php.ini \ 41 | && echo "xdebug.log_level = 0" >> /etc/php${PHP_VERSION}/php.ini \ 42 | && echo "xdebug.discover_client_host = 1" >> /etc/php${PHP_VERSION}/php.ini \ 43 | && echo "xdebug.client_host = host.docker.internal" >> /etc/php${PHP_VERSION}/php.ini \ 44 | && echo "xdebug.start_with_request = yes" >> /etc/php${PHP_VERSION}/php.ini \ 45 | ;fi 46 | 47 | RUN apk add php${PHP_VERSION}-zip php${PHP_VERSION}-pdo_mysql php${PHP_VERSION}-gd 48 | RUN apk add zip nano 49 | ARG LARAVEL_VERSION 50 | COPY docker-entrypoint.sh /docker-entrypoint.sh 51 | RUN sed -i "s#{LARAVEL_VERSION}#${LARAVEL_VERSION}#g" /docker-entrypoint.sh 52 | RUN chmod +x /docker-entrypoint.sh 53 | 54 | ## Linux permission issue 55 | ARG USER_ID 56 | ARG GROUP_ID 57 | RUN apk --no-cache add shadow sudo 58 | RUN usermod -u ${USER_ID} nobody && groupmod -g ${GROUP_ID} nobody 59 | 60 | # sudo command without password 61 | RUN echo "nobody ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 62 | RUN composer config --global process-timeout 6000 63 | 64 | RUN sed -i "s#{USER_ID}#${USER_ID}#g" /docker-entrypoint.sh 65 | RUN sed -i "s#{GROUP_ID}#${GROUP_ID}#g" /docker-entrypoint.sh 66 | RUN sed -i "s#{BACK_END}#${BACK_END}#g" /docker-entrypoint.sh 67 | 68 | ## nobody permission issue 69 | RUN usermod --home /home nobody 70 | COPY www.conf /etc/php${PHP_VERSION}/php-fpm.d/www.conf 71 | COPY nginx.conf /etc/nginx/nginx.conf 72 | RUN touch /env 73 | RUN chown -R nobody:nobody /env 74 | RUN chown -R nobody:nobody /home 75 | RUN chown -R nobody:nobody /var/preview/ 76 | RUN chown -R nobody:nobody /sbin/ 77 | RUN chown -R nobody:nobody /etc/php${PHP_VERSION}/ 78 | RUN chown -R nobody:nobody /etc/service/ 79 | RUN chown -R nobody:nobody /var/run/ 80 | RUN chown -R nobody:nobody /var/log/ 81 | RUN chown -R nobody:nobody /var/lib/nginx 82 | RUN chown -R nobody:nobody /etc/nginx 83 | ARG INSTALL_ADDITIONAL_EXTENSIONS 84 | ENV INSTALL_ADDITIONAL_EXTENSIONS=$INSTALL_ADDITIONAL_EXTENSIONS 85 | RUN if [ -z "$INSTALL_ADDITIONAL_EXTENSIONS" ] ; then \ 86 | echo "No additional PHP extensions added" \ 87 | ;else \ 88 | bash /package.sh \ 89 | ;fi 90 | USER nobody 91 | CMD /docker-entrypoint.sh & /sbin/runit-wrapper 92 | -------------------------------------------------------------------------------- /laravel/nginx/default.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80 default_server; 3 | 4 | root {SERVER_ROOT}; 5 | 6 | index index.php index.htm index.html; 7 | 8 | server_name _; 9 | 10 | charset utf-8; 11 | 12 | location = /favicon.ico { log_not_found off; access_log off; } 13 | location = /robots.txt { log_not_found off; access_log off; } 14 | 15 | location / { 16 | try_files $uri $uri/ /index.php$is_args$args; 17 | add_header Cache-Control "no-store, no-cache, must-revalidate"; 18 | } 19 | 20 | location ~ \.php$ { 21 | fastcgi_pass 127.0.0.1:9000; 22 | fastcgi_index index.php; 23 | include fastcgi.conf; 24 | } 25 | 26 | 27 | location ~ /\.ht { 28 | deny all; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /laravel/nginx/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set +x 3 | if [[ $(curl -Is https://laravel.com | head -n 1 | cut -d ' ' -f 2 ) == "200" ]]; then 4 | if [[ -f "/var/www/composer.json" ]] ; 5 | then 6 | cd /var/www/ 7 | if [[ -d "/var/www/vendor" ]] ; 8 | then 9 | echo "Steps to use Composer optimise autoloader" 10 | sudo composer update --prefer-dist --no-interaction --optimize-autoloader --no-dev 11 | echo "Steps to Clear All Development inputs" 12 | sudo php artisan view:clear 13 | sudo php artisan route:clear 14 | sudo php artisan config:clear 15 | sudo php artisan clear-compiled 16 | else 17 | echo "If composer vendor folder is not installed follow the below steps" 18 | sudo composer install --prefer-dist --no-interaction --optimize-autoloader --no-dev 19 | fi 20 | 21 | fi 22 | if [[ "$(ls -A "/var/www/")" ]] ; 23 | then 24 | echo "If the Directory is not empty, please delete the hidden files and directory" 25 | else 26 | sudo composer config --global process-timeout 6000 27 | sudo composer create-project --prefer-dist laravel/laravel:^{LARAVEL_VERSION}.0 . 28 | if [ $? != 0 ]; then 29 | sh /docker-entrypoint.sh 30 | fi 31 | fi 32 | echo "Steps to check application environment variable" 33 | if [[ ! -f ".env" ]] ; 34 | then 35 | echo ".env file not found" 36 | sudo cp .env.example .env 37 | else 38 | echo ".env file exit" 39 | fi 40 | 41 | sudo cp /app/default.conf /etc/nginx/conf.d/default.conf 42 | nginx -s reload 43 | sudo chown -R nobody:nobody /var/www 2> /dev/null 44 | 45 | sudo rm -rf /var/preview 2> /dev/null 46 | 47 | sudo php artisan key:generate 48 | 49 | exec "$@" 50 | else 51 | echo "Internet not working check your Internet connection or network"; 52 | fi -------------------------------------------------------------------------------- /laravel/nginx/nginx.conf: -------------------------------------------------------------------------------- 1 | # /etc/nginx/nginx.conf 2 | 3 | # user nobody; 4 | 5 | # Set number of worker processes automatically based on number of CPU cores. 6 | worker_processes auto; 7 | 8 | # Enables the use of JIT for regular expressions to speed-up their processing. 9 | pcre_jit on; 10 | 11 | # Configures default error logger. 12 | error_log /var/log/nginx/error.log warn; 13 | 14 | # Includes files with directives to load dynamic modules. 15 | include /etc/nginx/modules/*.conf; 16 | 17 | # Uncomment to include files with config snippets into the root context. 18 | # NOTE: This will be enabled by default in Alpine 3.15. 19 | #include /etc/nginx/conf.d/*.conf; 20 | 21 | events { 22 | # The maximum number of simultaneous connections that can be opened by 23 | # a worker process. 24 | worker_connections 1024; 25 | } 26 | 27 | http { 28 | # Includes mapping of file name extensions to MIME types of responses 29 | # and defines the default type. 30 | include /etc/nginx/mime.types; 31 | default_type application/octet-stream; 32 | 33 | # Name servers used to resolve names of upstream servers into addresses. 34 | # It's also needed when using tcpsocket and udpsocket in Lua modules. 35 | #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001; 36 | 37 | # Don't tell nginx version to the clients. Default is 'on'. 38 | server_tokens off; 39 | 40 | # Specifies the maximum accepted body size of a client request, as 41 | # indicated by the request header Content-Length. If the stated content 42 | # length is greater than this size, then the client receives the HTTP 43 | # error code 413. Set to 0 to disable. Default is '1m'. 44 | client_max_body_size 1m; 45 | 46 | # Sendfile copies data between one FD and other from within the kernel, 47 | # which is more efficient than read() + write(). Default is off. 48 | sendfile on; 49 | 50 | # Causes nginx to attempt to send its HTTP response head in one packet, 51 | # instead of using partial frames. Default is 'off'. 52 | tcp_nopush on; 53 | 54 | 55 | # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2. 56 | # TIP: If you're not obligated to support ancient clients, remove TLSv1.1. 57 | ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; 58 | 59 | # Path of the file with Diffie-Hellman parameters for EDH ciphers. 60 | # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048` 61 | #ssl_dhparam /etc/ssl/nginx/dh2048.pem; 62 | 63 | # Specifies that our cipher suits should be preferred over client ciphers. 64 | # Default is 'off'. 65 | ssl_prefer_server_ciphers on; 66 | 67 | # Enables a shared SSL cache with size that can hold around 8000 sessions. 68 | # Default is 'none'. 69 | ssl_session_cache shared:SSL:2m; 70 | 71 | # Specifies a time during which a client may reuse the session parameters. 72 | # Default is '5m'. 73 | ssl_session_timeout 1h; 74 | 75 | # Disable TLS session tickets (they are insecure). Default is 'on'. 76 | ssl_session_tickets off; 77 | 78 | 79 | # Enable gzipping of responses. 80 | #gzip on; 81 | 82 | # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'. 83 | gzip_vary on; 84 | 85 | 86 | # Helper variable for proxying websockets. 87 | map $http_upgrade $connection_upgrade { 88 | default upgrade; 89 | '' close; 90 | } 91 | 92 | 93 | # Specifies the main log format. 94 | log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 95 | '$status $body_bytes_sent "$http_referer" ' 96 | '"$http_user_agent" "$http_x_forwarded_for"'; 97 | 98 | # Sets the path, format, and configuration for a buffered log write. 99 | access_log /var/log/nginx/access.log main; 100 | 101 | 102 | # Includes virtual hosts configs. 103 | include /etc/nginx/conf.d/*.conf; 104 | } 105 | 106 | # TIP: Uncomment if you use stream module. 107 | #include /etc/nginx/stream.conf; -------------------------------------------------------------------------------- /laravel/nginx/package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | word=$(echo -n "$INSTALL_ADDITIONAL_EXTENSIONS" | wc -w) 3 | for (( n=1; n<=$word; n++ )) 4 | do 5 | SERVER_ARRAY=`echo ${INSTALL_ADDITIONAL_EXTENSIONS} | awk '{print $'$n'}' | sed 's/.*-//'` 6 | sudo apk add --no-cache php${PHP_VERSION}-`echo ${SERVER_ARRAY}` 7 | done`` -------------------------------------------------------------------------------- /laravel/nginx/www.conf: -------------------------------------------------------------------------------- 1 | ; Start a new pool named 'www'. 2 | ; the variable $pool can be used in any directive and will be replaced by the 3 | ; pool name ('www' here) 4 | [www] 5 | 6 | ; Per pool prefix 7 | ; It only applies on the following directives: 8 | ; - 'access.log' 9 | ; - 'slowlog' 10 | ; - 'listen' (unixsocket) 11 | ; - 'chroot' 12 | ; - 'chdir' 13 | ; - 'php_values' 14 | ; - 'php_admin_values' 15 | ; When not set, the global prefix (or /usr) applies instead. 16 | ; Note: This directive can also be relative to the global prefix. 17 | ; Default Value: none 18 | ;prefix = /path/to/pools/$pool 19 | 20 | ; Unix user/group of processes 21 | ; Note: The user is mandatory. If the group is not set, the default user's group 22 | ; will be used. 23 | ;user = nobody 24 | ;group = nobody 25 | 26 | ; The address on which to accept FastCGI requests. 27 | ; Valid syntaxes are: 28 | ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on 29 | ; a specific port; 30 | ; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on 31 | ; a specific port; 32 | ; 'port' - to listen on a TCP socket to all addresses 33 | ; (IPv6 and IPv4-mapped) on a specific port; 34 | ; '/path/to/unix/socket' - to listen on a unix socket. 35 | ; Note: This value is mandatory. 36 | listen = 127.0.0.1:9000 37 | 38 | ; Set listen(2) backlog. 39 | ; Default Value: 511 (-1 on FreeBSD and OpenBSD) 40 | ;listen.backlog = 511 41 | 42 | ; Set permissions for unix socket, if one is used. In Linux, read/write 43 | ; permissions must be set in order to allow connections from a web server. Many 44 | ; BSD-derived systems allow connections regardless of permissions. The owner 45 | ; and group can be specified either by name or by their numeric IDs. 46 | ; Default Values: user and group are set as the running user 47 | ; mode is set to 0660 48 | ; listen.owner = nobody 49 | ; listen.group = nobody 50 | ; listen.mode = 0660 51 | ; When POSIX Access Control Lists are supported you can set them using 52 | ; these options, value is a comma separated list of user/group names. 53 | ; When set, listen.owner and listen.group are ignored 54 | ;listen.acl_users = 55 | ;listen.acl_groups = 56 | 57 | ; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect. 58 | ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original 59 | ; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address 60 | ; must be separated by a comma. If this value is left blank, connections will be 61 | ; accepted from any ip address. 62 | ; Default Value: any 63 | ;listen.allowed_clients = 127.0.0.1 64 | 65 | ; Specify the nice(2) priority to apply to the pool processes (only if set) 66 | ; The value can vary from -19 (highest priority) to 20 (lower priority) 67 | ; Note: - It will only work if the FPM master process is launched as root 68 | ; - The pool processes will inherit the master process priority 69 | ; unless it specified otherwise 70 | ; Default Value: no set 71 | ; process.priority = -19 72 | 73 | ; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user 74 | ; or group is differrent than the master process user. It allows to create process 75 | ; core dump and ptrace the process for the pool user. 76 | ; Default Value: no 77 | ; process.dumpable = yes 78 | 79 | ; Choose how the process manager will control the number of child processes. 80 | ; Possible Values: 81 | ; static - a fixed number (pm.max_children) of child processes; 82 | ; dynamic - the number of child processes are set dynamically based on the 83 | ; following directives. With this process management, there will be 84 | ; always at least 1 children. 85 | ; pm.max_children - the maximum number of children that can 86 | ; be alive at the same time. 87 | ; pm.start_servers - the number of children created on startup. 88 | ; pm.min_spare_servers - the minimum number of children in 'idle' 89 | ; state (waiting to process). If the number 90 | ; of 'idle' processes is less than this 91 | ; number then some children will be created. 92 | ; pm.max_spare_servers - the maximum number of children in 'idle' 93 | ; state (waiting to process). If the number 94 | ; of 'idle' processes is greater than this 95 | ; number then some children will be killed. 96 | ; ondemand - no children are created at startup. Children will be forked when 97 | ; new requests will connect. The following parameter are used: 98 | ; pm.max_children - the maximum number of children that 99 | ; can be alive at the same time. 100 | ; pm.process_idle_timeout - The number of seconds after which 101 | ; an idle process will be killed. 102 | ; Note: This value is mandatory. 103 | pm = dynamic 104 | 105 | ; The number of child processes to be created when pm is set to 'static' and the 106 | ; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'. 107 | ; This value sets the limit on the number of simultaneous requests that will be 108 | ; served. Equivalent to the ApacheMaxClients directive with mpm_prefork. 109 | ; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP 110 | ; CGI. The below defaults are based on a server without much resources. Don't 111 | ; forget to tweak pm.* to fit your needs. 112 | ; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand' 113 | ; Note: This value is mandatory. 114 | pm.max_children = 5 115 | 116 | ; The number of child processes created on startup. 117 | ; Note: Used only when pm is set to 'dynamic' 118 | ; Default Value: (min_spare_servers + max_spare_servers) / 2 119 | pm.start_servers = 2 120 | 121 | ; The desired minimum number of idle server processes. 122 | ; Note: Used only when pm is set to 'dynamic' 123 | ; Note: Mandatory when pm is set to 'dynamic' 124 | pm.min_spare_servers = 1 125 | 126 | ; The desired maximum number of idle server processes. 127 | ; Note: Used only when pm is set to 'dynamic' 128 | ; Note: Mandatory when pm is set to 'dynamic' 129 | pm.max_spare_servers = 3 130 | 131 | ; The number of seconds after which an idle process will be killed. 132 | ; Note: Used only when pm is set to 'ondemand' 133 | ; Default Value: 10s 134 | ;pm.process_idle_timeout = 10s; 135 | 136 | ; The number of requests each child process should execute before respawning. 137 | ; This can be useful to work around memory leaks in 3rd party libraries. For 138 | ; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. 139 | ; Default Value: 0 140 | ;pm.max_requests = 500 141 | 142 | ; The URI to view the FPM status page. If this value is not set, no URI will be 143 | ; recognized as a status page. It shows the following informations: 144 | ; pool - the name of the pool; 145 | ; process manager - static, dynamic or ondemand; 146 | ; start time - the date and time FPM has started; 147 | ; start since - number of seconds since FPM has started; 148 | ; accepted conn - the number of request accepted by the pool; 149 | ; listen queue - the number of request in the queue of pending 150 | ; connections (see backlog in listen(2)); 151 | ; max listen queue - the maximum number of requests in the queue 152 | ; of pending connections since FPM has started; 153 | ; listen queue len - the size of the socket queue of pending connections; 154 | ; idle processes - the number of idle processes; 155 | ; active processes - the number of active processes; 156 | ; total processes - the number of idle + active processes; 157 | ; max active processes - the maximum number of active processes since FPM 158 | ; has started; 159 | ; max children reached - number of times, the process limit has been reached, 160 | ; when pm tries to start more children (works only for 161 | ; pm 'dynamic' and 'ondemand'); 162 | ; Value are updated in real time. 163 | ; Example output: 164 | ; pool: www 165 | ; process manager: static 166 | ; start time: 01/Jul/2011:17:53:49 +0200 167 | ; start since: 62636 168 | ; accepted conn: 190460 169 | ; listen queue: 0 170 | ; max listen queue: 1 171 | ; listen queue len: 42 172 | ; idle processes: 4 173 | ; active processes: 11 174 | ; total processes: 15 175 | ; max active processes: 12 176 | ; max children reached: 0 177 | ; 178 | ; By default the status page output is formatted as text/plain. Passing either 179 | ; 'html', 'xml' or 'json' in the query string will return the corresponding 180 | ; output syntax. Example: 181 | ; http://www.foo.bar/status 182 | ; http://www.foo.bar/status?json 183 | ; http://www.foo.bar/status?html 184 | ; http://www.foo.bar/status?xml 185 | ; 186 | ; By default the status page only outputs short status. Passing 'full' in the 187 | ; query string will also return status for each pool process. 188 | ; Example: 189 | ; http://www.foo.bar/status?full 190 | ; http://www.foo.bar/status?json&full 191 | ; http://www.foo.bar/status?html&full 192 | ; http://www.foo.bar/status?xml&full 193 | ; The Full status returns for each process: 194 | ; pid - the PID of the process; 195 | ; state - the state of the process (Idle, Running, ...); 196 | ; start time - the date and time the process has started; 197 | ; start since - the number of seconds since the process has started; 198 | ; requests - the number of requests the process has served; 199 | ; request duration - the duration in µs of the requests; 200 | ; request method - the request method (GET, POST, ...); 201 | ; request URI - the request URI with the query string; 202 | ; content length - the content length of the request (only with POST); 203 | ; user - the user (PHP_AUTH_USER) (or '-' if not set); 204 | ; script - the main script called (or '-' if not set); 205 | ; last request cpu - the %cpu the last request consumed 206 | ; it's always 0 if the process is not in Idle state 207 | ; because CPU calculation is done when the request 208 | ; processing has terminated; 209 | ; last request memory - the max amount of memory the last request consumed 210 | ; it's always 0 if the process is not in Idle state 211 | ; because memory calculation is done when the request 212 | ; processing has terminated; 213 | ; If the process is in Idle state, then informations are related to the 214 | ; last request the process has served. Otherwise informations are related to 215 | ; the current request being served. 216 | ; Example output: 217 | ; ************************ 218 | ; pid: 31330 219 | ; state: Running 220 | ; start time: 01/Jul/2011:17:53:49 +0200 221 | ; start since: 63087 222 | ; requests: 12808 223 | ; request duration: 1250261 224 | ; request method: GET 225 | ; request URI: /test_mem.php?N=10000 226 | ; content length: 0 227 | ; user: - 228 | ; script: /home/fat/web/docs/php/test_mem.php 229 | ; last request cpu: 0.00 230 | ; last request memory: 0 231 | ; 232 | ; Note: There is a real-time FPM status monitoring sample web page available 233 | ; It's available in: /usr/share/php7/fpm/status.html 234 | ; 235 | ; Note: The value must start with a leading slash (/). The value can be 236 | ; anything, but it may not be a good idea to use the .php extension or it 237 | ; may conflict with a real PHP file. 238 | ; Default Value: not set 239 | ;pm.status_path = /status 240 | 241 | ; The ping URI to call the monitoring page of FPM. If this value is not set, no 242 | ; URI will be recognized as a ping page. This could be used to test from outside 243 | ; that FPM is alive and responding, or to 244 | ; - create a graph of FPM availability (rrd or such); 245 | ; - remove a server from a group if it is not responding (load balancing); 246 | ; - trigger alerts for the operating team (24/7). 247 | ; Note: The value must start with a leading slash (/). The value can be 248 | ; anything, but it may not be a good idea to use the .php extension or it 249 | ; may conflict with a real PHP file. 250 | ; Default Value: not set 251 | ;ping.path = /ping 252 | 253 | ; This directive may be used to customize the response of a ping request. The 254 | ; response is formatted as text/plain with a 200 response code. 255 | ; Default Value: pong 256 | ;ping.response = pong 257 | 258 | ; The access log file 259 | ; Default: not set 260 | ;access.log = log/php7/$pool.access.log 261 | 262 | ; The access log format. 263 | ; The following syntax is allowed 264 | ; %%: the '%' character 265 | ; %C: %CPU used by the request 266 | ; it can accept the following format: 267 | ; - %{user}C for user CPU only 268 | ; - %{system}C for system CPU only 269 | ; - %{total}C for user + system CPU (default) 270 | ; %d: time taken to serve the request 271 | ; it can accept the following format: 272 | ; - %{seconds}d (default) 273 | ; - %{miliseconds}d 274 | ; - %{mili}d 275 | ; - %{microseconds}d 276 | ; - %{micro}d 277 | ; %e: an environment variable (same as $_ENV or $_SERVER) 278 | ; it must be associated with embraces to specify the name of the env 279 | ; variable. Some exemples: 280 | ; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e 281 | ; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e 282 | ; %f: script filename 283 | ; %l: content-length of the request (for POST request only) 284 | ; %m: request method 285 | ; %M: peak of memory allocated by PHP 286 | ; it can accept the following format: 287 | ; - %{bytes}M (default) 288 | ; - %{kilobytes}M 289 | ; - %{kilo}M 290 | ; - %{megabytes}M 291 | ; - %{mega}M 292 | ; %n: pool name 293 | ; %o: output header 294 | ; it must be associated with embraces to specify the name of the header: 295 | ; - %{Content-Type}o 296 | ; - %{X-Powered-By}o 297 | ; - %{Transfert-Encoding}o 298 | ; - .... 299 | ; %p: PID of the child that serviced the request 300 | ; %P: PID of the parent of the child that serviced the request 301 | ; %q: the query string 302 | ; %Q: the '?' character if query string exists 303 | ; %r: the request URI (without the query string, see %q and %Q) 304 | ; %R: remote IP address 305 | ; %s: status (response code) 306 | ; %t: server time the request was received 307 | ; it can accept a strftime(3) format: 308 | ; %d/%b/%Y:%H:%M:%S %z (default) 309 | ; The strftime(3) format must be encapsuled in a %{}t tag 310 | ; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t 311 | ; %T: time the log has been written (the request has finished) 312 | ; it can accept a strftime(3) format: 313 | ; %d/%b/%Y:%H:%M:%S %z (default) 314 | ; The strftime(3) format must be encapsuled in a %{}t tag 315 | ; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t 316 | ; %u: remote user 317 | ; 318 | ; Default: "%R - %u %t \"%m %r\" %s" 319 | ;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%" 320 | 321 | ; The log file for slow requests 322 | ; Default Value: not set 323 | ; Note: slowlog is mandatory if request_slowlog_timeout is set 324 | ;slowlog = log/php7/$pool.slow.log 325 | 326 | ; The timeout for serving a single request after which a PHP backtrace will be 327 | ; dumped to the 'slowlog' file. A value of '0s' means 'off'. 328 | ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) 329 | ; Default Value: 0 330 | ;request_slowlog_timeout = 0 331 | 332 | ; Depth of slow log stack trace. 333 | ; Default Value: 20 334 | ;request_slowlog_trace_depth = 20 335 | 336 | ; The timeout for serving a single request after which the worker process will 337 | ; be killed. This option should be used when the 'max_execution_time' ini option 338 | ; does not stop script execution for some reason. A value of '0' means 'off'. 339 | ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) 340 | ; Default Value: 0 341 | ;request_terminate_timeout = 0 342 | 343 | ; The timeout set by 'request_terminate_timeout' ini option is not engaged after 344 | ; application calls 'fastcgi_finish_request' or when application has finished and 345 | ; shutdown functions are being called (registered via register_shutdown_function). 346 | ; This option will enable timeout limit to be applied unconditionally 347 | ; even in such cases. 348 | ; Default Value: no 349 | ;request_terminate_timeout_track_finished = no 350 | 351 | ; Set open file descriptor rlimit. 352 | ; Default Value: system defined value 353 | ;rlimit_files = 1024 354 | 355 | ; Set max core size rlimit. 356 | ; Possible Values: 'unlimited' or an integer greater or equal to 0 357 | ; Default Value: system defined value 358 | ;rlimit_core = 0 359 | 360 | ; Chroot to this directory at the start. This value must be defined as an 361 | ; absolute path. When this value is not set, chroot is not used. 362 | ; Note: you can prefix with '$prefix' to chroot to the pool prefix or one 363 | ; of its subdirectories. If the pool prefix is not set, the global prefix 364 | ; will be used instead. 365 | ; Note: chrooting is a great security feature and should be used whenever 366 | ; possible. However, all PHP paths will be relative to the chroot 367 | ; (error_log, sessions.save_path, ...). 368 | ; Default Value: not set 369 | ;chroot = 370 | 371 | ; Chdir to this directory at the start. 372 | ; Note: relative path can be used. 373 | ; Default Value: current directory or / when chroot 374 | ;chdir = /var/www 375 | 376 | ; Redirect worker stdout and stderr into main error log. If not set, stdout and 377 | ; stderr will be redirected to /dev/null according to FastCGI specs. 378 | ; Note: on highloaded environement, this can cause some delay in the page 379 | ; process time (several ms). 380 | ; Default Value: no 381 | ;catch_workers_output = yes 382 | 383 | ; Decorate worker output with prefix and suffix containing information about 384 | ; the child that writes to the log and if stdout or stderr is used as well as 385 | ; log level and time. This options is used only if catch_workers_output is yes. 386 | ; Settings to "no" will output data as written to the stdout or stderr. 387 | ; Default value: yes 388 | ;decorate_workers_output = no 389 | 390 | ; Clear environment in FPM workers 391 | ; Prevents arbitrary environment variables from reaching FPM worker processes 392 | ; by clearing the environment in workers before env vars specified in this 393 | ; pool configuration are added. 394 | ; Setting to "no" will make all environment variables available to PHP code 395 | ; via getenv(), $_ENV and $_SERVER. 396 | ; Default Value: yes 397 | ;clear_env = no 398 | 399 | ; Limits the extensions of the main script FPM will allow to parse. This can 400 | ; prevent configuration mistakes on the web server side. You should only limit 401 | ; FPM to .php extensions to prevent malicious users to use other extensions to 402 | ; execute php code. 403 | ; Note: set an empty value to allow all extensions. 404 | ; Default Value: .php 405 | ;security.limit_extensions = .php .php3 .php4 .php5 .php7 406 | 407 | ; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from 408 | ; the current environment. 409 | ; Default Value: clean env 410 | ;env[HOSTNAME] = $HOSTNAME 411 | ;env[PATH] = /usr/local/bin:/usr/bin:/bin 412 | ;env[TMP] = /tmp 413 | ;env[TMPDIR] = /tmp 414 | ;env[TEMP] = /tmp 415 | 416 | ; Additional php.ini defines, specific to this pool of workers. These settings 417 | ; overwrite the values previously defined in the php.ini. The directives are the 418 | ; same as the PHP SAPI: 419 | ; php_value/php_flag - you can set classic ini defines which can 420 | ; be overwritten from PHP call 'ini_set'. 421 | ; php_admin_value/php_admin_flag - these directives won't be overwritten by 422 | ; PHP call 'ini_set' 423 | ; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no. 424 | 425 | ; Defining 'extension' will load the corresponding shared extension from 426 | ; extension_dir. Defining 'disable_functions' or 'disable_classes' will not 427 | ; overwrite previously defined php.ini values, but will append the new value 428 | ; instead. 429 | 430 | ; Note: path INI options can be relative and will be expanded with the prefix 431 | ; (pool, global or /usr) 432 | 433 | ; Default Value: nothing is defined by default except the values in php.ini and 434 | ; specified at startup with the -d argument 435 | ;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com 436 | ;php_flag[display_errors] = off 437 | ;php_admin_value[error_log] = /var/log/php7/$pool.error.log 438 | ;php_admin_flag[log_errors] = on 439 | ;php_admin_value[memory_limit] = 32M -------------------------------------------------------------------------------- /settings.yml: -------------------------------------------------------------------------------- 1 | #User defined 2 | user: 3 | back_end: 4 | label: 5 | Backend 6 | hint: 7 | Select a backend from the list above 8 | type: 9 | select 10 | values: 11 | - apache 12 | - nginx 13 | target: 14 | BACK_END 15 | php_version: 16 | label: 17 | PHP version 18 | hint: 19 | Select a PHP version from the list above 20 | type: 21 | select 22 | values: 23 | - 7.4 24 | - "8.0" 25 | - 8.1 26 | - "8.2" 27 | - "8.3" 28 | target: 29 | PHP_VERSION 30 | 31 | backend_ws: 32 | disabled_post_install: true 33 | label: 34 | Laravel version 35 | hint: 36 | Select a laravel version 37 | type: 38 | select 39 | values: 40 | - 7 41 | - 8 42 | - 9 43 | - "10" 44 | - "11" 45 | target: 46 | LARAVEL_VERSION 47 | 48 | php_error_reporting: 49 | label: 50 | Enable PHP error reporting? 51 | type: 52 | checkbox 53 | hint: Check the box to display PHP errors 54 | target: 55 | DISPLAY_PHPERROR 56 | php_xdebug: 57 | label: 58 | Enable PHP extension XDEBUG? 59 | type: 60 | checkbox 61 | hint: Check the box to display extension xdebug 62 | target: 63 | XDEBUG 64 | 65 | # mysql_version: 66 | # label: 67 | # MySQL version 68 | # hint: 69 | # Select MySQL version 70 | # type: 71 | # select 72 | # values: 73 | # - "5.0" 74 | # - "7.0" 75 | # target: 76 | # MYSQL_VERSION 77 | 78 | # customize_server_root_path: 79 | # label: 80 | # Server root 81 | # type: 82 | # input 83 | # values: 84 | # /var/www 85 | # hint: 86 | # Server document root 87 | # target: 88 | # SERVER_ROOT 89 | 90 | #System defaults 91 | system: 92 | show_localpath_selector: 93 | true 94 | #For collecting and storing DB in .env 95 | #db/user/password 96 | # db_credentials: 97 | # true 98 | #Generate public ports for the docker image 99 | ports: 100 | http: 101 | LARAVEL_HOST_HTTP_PORT 102 | --------------------------------------------------------------------------------