Refactor: migrate files
This commit is contained in:
@@ -1,2 +1,4 @@
|
||||
/config.php
|
||||
/docker-compose.yml
|
||||
/services/nginx/app/vendor/
|
||||
/services/nginx/app/modules/washcertificates/vendor/
|
||||
|
||||
+10
-9
@@ -1,5 +1,5 @@
|
||||
# Base image: PHP 8.2 with Apache
|
||||
FROM php:8.2-apache
|
||||
# Base image: PHP 8.2 with FPM
|
||||
FROM php:8.2-fpm
|
||||
|
||||
# Install necessary system dependencies
|
||||
RUN apt-get update && apt-get install -y \
|
||||
@@ -11,6 +11,7 @@ RUN apt-get update && apt-get install -y \
|
||||
libcurl4-openssl-dev \
|
||||
default-mysql-client \
|
||||
redis-server \
|
||||
nginx \
|
||||
&& docker-php-ext-install \
|
||||
mysqli \
|
||||
pdo \
|
||||
@@ -19,15 +20,15 @@ RUN apt-get update && apt-get install -y \
|
||||
bcmath \
|
||||
sockets
|
||||
|
||||
# Enable Apache mod_rewrite (required for web server routing)
|
||||
RUN a2enmod rewrite
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /var/www/html
|
||||
|
||||
# Copy application code
|
||||
COPY . /var/www/html
|
||||
|
||||
# Copy Nginx configuration file
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
||||
|
||||
# Install Composer
|
||||
COPY --from=composer:2.6 /usr/bin/composer /usr/bin/composer
|
||||
|
||||
@@ -37,8 +38,8 @@ RUN composer install --no-dev --optimize-autoloader
|
||||
# Set permissions for the web server
|
||||
RUN chown -R www-data:www-data /var/www/html && chmod -R 755 /var/www/html
|
||||
|
||||
# Expose port 80 for HTTP traffic
|
||||
EXPOSE 80
|
||||
# Expose port 80 (HTTP) and 443 (HTTPS)
|
||||
EXPOSE 80 443
|
||||
|
||||
# Start Redis service when the container starts
|
||||
CMD service redis-server start && apache2-foreground
|
||||
# Start services (Nginx and Redis) when the container starts
|
||||
CMD service redis-server start && nginx -g "daemon off;" && php-fpm
|
||||
@@ -0,0 +1,21 @@
|
||||
<IfModule mod_ssl.c>
|
||||
<VirtualHost _default_:443>
|
||||
ServerAdmin webmaster@localhost
|
||||
DocumentRoot /var/www/html
|
||||
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/letsencrypt/live/nnks.truckwash.dk/fullchain.pem
|
||||
SSLCertificateKeyFile /etc/letsencrypt/live/nnks.truckwash.dk/privkey.pem
|
||||
|
||||
<FilesMatch "\.(cgi|shtml|phtml|php)$">
|
||||
SSLOptions +StdEnvVars
|
||||
</FilesMatch>
|
||||
|
||||
<Directory /usr/lib/cgi-bin>
|
||||
SSLOptions +StdEnvVars
|
||||
</Directory>
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
|
||||
</VirtualHost>
|
||||
</IfModule>
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
# Main Nginx Configuration File
|
||||
worker_processes auto;
|
||||
pid /run/nginx.pid;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
# Include additional configuration files
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
# Log settings
|
||||
access_log /var/log/nginx/access.log;
|
||||
error_log /var/log/nginx/error.log;
|
||||
|
||||
# Gzip settings (optional)
|
||||
gzip on;
|
||||
gzip_types text/plain application/xml text/css application/javascript;
|
||||
|
||||
# Include server block configurations
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
|
||||
# Redirect HTTP to HTTPS
|
||||
server {
|
||||
listen 80;
|
||||
server_name nnks.truckwash.dk;
|
||||
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name nnks.truckwash.dk;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/nnks.truckwash.dk/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/nnks.truckwash.dk/privkey.pem;
|
||||
|
||||
root /var/www/html;
|
||||
index index.html index.htm index.php;
|
||||
|
||||
# Enable SSL options
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
# Logging
|
||||
error_log /var/log/nginx/error.log;
|
||||
access_log /var/log/nginx/access.log combined;
|
||||
|
||||
# Add CORS headers
|
||||
location / {
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
|
||||
add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Requested-With";
|
||||
add_header Access-Control-Allow-Credentials true;
|
||||
|
||||
# If OPTIONS method is needed for preflight
|
||||
if ($request_method = 'OPTIONS') {
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
|
||||
add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Requested-With";
|
||||
return 204; # No Content
|
||||
}
|
||||
|
||||
# Run the index.php file, no matter what the request URI is
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
|
||||
# Location for PHP (using PHP 8.2)
|
||||
location ~ \.php$ {
|
||||
include fastcgi_params;
|
||||
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
|
||||
}
|
||||
|
||||
# Location for static files
|
||||
location ~* \.(cgi|shtml|phtml)$ {
|
||||
# Additional SSL options or configurations can be placed here, if necessary.
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
FROM mysql:8.0
|
||||
# Set working directory
|
||||
WORKDIR /var/lib/mysql
|
||||
@@ -0,0 +1,14 @@
|
||||
# NGINX Dockerfile
|
||||
FROM nginx:1.27.3-alpine
|
||||
|
||||
# Import the configuration file for Nginx
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
||||
|
||||
# Copy the contents of the /app directory to the /var/www/html directory
|
||||
COPY /app /var/www/html
|
||||
|
||||
# Expose port 80 (HTTP) and 443 (HTTPS)
|
||||
EXPOSE 80 443
|
||||
|
||||
# Start Nginx when the container starts
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
@@ -0,0 +1,98 @@
|
||||
<?php global $CONFIG_DB, $DEBUG, $ENCRYPTION_KEY, $CORS, $ECONOMIC_API, $WORDPRESS_STATIC_TOKEN, $EMAIL_WASH_CERTIFICATE_TOKEN, $MINIO, $REDIS_CONFIG, $WORDPRESS_API_URL, $SLACK_DEFAULT_WEBHOOK;
|
||||
|
||||
/**
|
||||
* Check if the environment variables are set (If we are running in a Docker container)
|
||||
*/
|
||||
if (isset($_ENV['USE_ENV']) && $_ENV['USE_ENV'] === 'true') {
|
||||
// Set the configuration from the environment variables
|
||||
$ENV_VARIABLES = [
|
||||
'CONFIG_DB_HOST' => 'host',
|
||||
'CONFIG_DB_USER' => 'user',
|
||||
'CONFIG_DB_PASSWORD' => 'password',
|
||||
'CONFIG_DB_DATABASE' => 'database',
|
||||
'DEBUG' => 'DEBUG',
|
||||
'ENCRYPTION_KEY' => 'ENCRYPTION_KEY',
|
||||
'CORS' => 'CORS',
|
||||
'ECONOMIC_API_APP_ACCESS_GRANT' => 'app_access_grant',
|
||||
'ECONOMIC_API_APP_ACCESS_GRANT2' => 'app_access_grant2',
|
||||
'ECONOMIC_API_APP_SECRET_TOKEN' => 'app_secret_token',
|
||||
'WORDPRESS_STATIC_TOKEN' => 'WORDPRESS_STATIC_TOKEN',
|
||||
'EMAIL_WASH_CERTIFICATE_TOKEN' => 'EMAIL_WASH_CERTIFICATE_TOKEN',
|
||||
'WORDPRESS_API_URL' => 'WORDPRESS_API_URL',
|
||||
'MINIO_ENDPOINT' => 'endpoint',
|
||||
'MINIO_ACCESS_KEY' => 'access_key',
|
||||
'MINIO_SECRET_KEY' => 'secret_key',
|
||||
'SLACK_DEFAULT_WEBHOOK' => 'SLACK_DEFAULT_WEBHOOK',
|
||||
'REDIS_CONFIG_HOST' => 'host',
|
||||
'REDIS_CONFIG_DATABASE' => 'database',
|
||||
'REDIS_CONFIG_PASSWORD' => 'password'
|
||||
];
|
||||
/**
|
||||
* Set the db configuration
|
||||
*/
|
||||
$CONFIG_DB = [
|
||||
'host' => $_ENV['CONFIG_DB_HOST'],
|
||||
'user' => $_ENV['CONFIG_DB_USER'],
|
||||
'password' => $_ENV['CONFIG_DB_PASSWORD'],
|
||||
'database' => $_ENV['CONFIG_DB_DATABASE']
|
||||
];
|
||||
/**
|
||||
* Set the debug configuration
|
||||
*/
|
||||
$DEBUG = $_ENV['DEBUG'];
|
||||
/**
|
||||
* Set the encryption key
|
||||
*/
|
||||
$ENCRYPTION_KEY = $_ENV['ENCRYPTION_KEY'];
|
||||
/**
|
||||
* Set the CORS configuration
|
||||
*/
|
||||
$CORS = $_ENV['CORS'];
|
||||
/**
|
||||
* Set the economic API configuration
|
||||
*/
|
||||
$ECONOMIC_API = [
|
||||
'app_access_grant' => $_ENV['ECONOMIC_API_APP_ACCESS_GRANT'],
|
||||
'app_access_grant2' => $_ENV['ECONOMIC_API_APP_ACCESS_GRANT2'],
|
||||
'app_secret_token' => $_ENV['ECONOMIC_API_APP_SECRET_TOKEN']
|
||||
];
|
||||
/**
|
||||
* Set the WordPress static token
|
||||
*/
|
||||
$WORDPRESS_STATIC_TOKEN = $_ENV['WORDPRESS_STATIC_TOKEN'];
|
||||
/**
|
||||
* Set the email wash certificate token
|
||||
*/
|
||||
$EMAIL_WASH_CERTIFICATE_TOKEN = $_ENV['EMAIL_WASH_CERTIFICATE_TOKEN'];
|
||||
/**
|
||||
* Set the WordPress API URL
|
||||
*/
|
||||
$WORDPRESS_API_URL = $_ENV['WORDPRESS_API_URL'];
|
||||
/**
|
||||
* Set the Minio configuration
|
||||
*/
|
||||
$MINIO = [
|
||||
'endpoint' => $_ENV['MINIO_ENDPOINT'],
|
||||
'access_key' => $_ENV['MINIO_ACCESS_KEY'],
|
||||
'secret_key' => $_ENV['MINIO_SECRET_KEY']
|
||||
];
|
||||
/**
|
||||
* Set the Slack default webhook
|
||||
*/
|
||||
$SLACK_DEFAULT_WEBHOOK = $_ENV['SLACK_DEFAULT_WEBHOOK'];
|
||||
/**
|
||||
* Set the Redis configuration
|
||||
*/
|
||||
$REDIS_CONFIG = [
|
||||
'host' => $_ENV['REDIS_CONFIG_HOST'],
|
||||
'database' => $_ENV['REDIS_CONFIG_DATABASE'],
|
||||
'password' => $_ENV['REDIS_CONFIG_PASSWORD']
|
||||
];
|
||||
|
||||
// Set the timezone
|
||||
date_default_timezone_set($_ENV['CONFIG_TIMEZONE']) ?? 'Europe/Copenhagen';
|
||||
|
||||
} else {
|
||||
// Throw an error if the environment variables are not set
|
||||
throw new Exception('Environment variables are not set');
|
||||
}
|
||||
Generated
|
Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 204 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user