diff --git a/.gitignore b/.gitignore index 8c2fb9405..33e412c01 100644 --- a/.gitignore +++ b/.gitignore @@ -20,7 +20,7 @@ sami.phar # For local development with docker # Remove if we ever put the Dockerfile in the repo .dockerignore -Dockerfile +#Dockerfile docker-compose.yml # for image related files misc diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..90d18594c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM alpine:3.7 + +WORKDIR /app + +RUN apk add --no-cache wget ca-certificates && \ + wget -O /etc/apk/keys/phpearth.rsa.pub https://repos.php.earth/alpine/phpearth.rsa.pub && \ + echo "https://repos.php.earth/alpine/v3.7" >> /etc/apk/repositories && \ + apk add --no-cache --update certbot nginx dcron curl tini php7.2 php7.2-bcmath php7.2-common php7.2-dom php7.2-fpm php7.2-gd php7.2-mbstring php7.2-openssl php7.2-zip php7.2-pdo php7.2-phar php7.2-json php7.2-pdo_mysql php7.2-session php7.2-ctype php7.2-tokenizer php7.2-zlib php7.2-simplexml && \ + curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + +COPY . ./ + +COPY default.conf /etc/nginx/conf.d/default.conf + +RUN cp .env.example .env +RUN composer install --no-dev + + +EXPOSE 80 +EXPOSE 443 + +RUN chown -R www-data:www-data . +RUN chmod -R 777 storage/* bootstrap/cache /var/run/php + +ENTRYPOINT ["ash", "entrypoint.sh"] + diff --git a/default.conf b/default.conf new file mode 100644 index 000000000..0944bf799 --- /dev/null +++ b/default.conf @@ -0,0 +1,51 @@ +# If using Ubuntu this file should be placed in: +# /etc/nginx/sites-available/ +# +# If using CentOS this file should be placed in: +# /etc/nginx/conf.d/ +# +server { + listen 80; + server_name _; + + root /app/public; + index index.html index.htm index.php; + charset utf-8; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location = /favicon.ico { access_log off; log_not_found off; } + location = /robots.txt { access_log off; log_not_found off; } + + access_log off; + error_log /var/log/nginx/pterodactyl.app-error.log error; + + # allow larger file uploads and longer script runtimes + client_max_body_size 100m; + client_body_timeout 120s; + + sendfile off; + + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + # the fastcgi_pass path needs to be changed accordingly when using CentOS + fastcgi_pass unix:/var/run/php/php-fpm7.2.sock; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M"; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTP_PROXY ""; + fastcgi_intercept_errors off; + fastcgi_buffer_size 16k; + fastcgi_buffers 4 16k; + fastcgi_connect_timeout 300; + fastcgi_send_timeout 300; + fastcgi_read_timeout 300; + } + + location ~ /\.ht { + deny all; + } +} diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 000000000..495581c37 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,27 @@ +#!/bin/ash +tini -- php-fpm + +until nc -z -v -w30 $DB_HOST 3306 +do + echo "Waiting for database connection..." + # wait for 5 seconds before check again + sleep 5 +done + +sed -i s/DB_HOST=127.0.0.1/DB_HOST=$DB_HOST/g /app/.env +sed -i s/DB_DATABASE=panel/DB_DATABASE=$DB_DATABASE/g /app/.env +sed -i s/DB_USERNAME=pterodactyl/DB_USERNAME=$DB_USERNAME/g /app/.env +sed -i s/DB_PASSWORD=/DB_PASSWORD=$DB_PASSWORD/g /app/.env + +#echo "1" +#chown -R www-data:www-data . +#echo "2" +#chmod -R 777 storage/* bootstrap/cache /var/run/php +echo "3" +php artisan key:generate --force +echo "4" +php artisan migrate --force +echo "5" +php artisan db:seed --force +echo "Done" +nginx -g 'pid /tmp/nginx.pid; daemon off;'