From 5520a16b6c97d2e7a3aaebe39fc5829f02610c4d Mon Sep 17 00:00:00 2001 From: myrmidex Date: Sat, 28 Jun 2025 11:30:31 +0200 Subject: [PATCH] Set up docker compose --- .dockerignore | 9 +++++++++ Dockerfile | 41 +++++++++++++++++++++++++++++++++++++++++ bootstrap/database.php | 7 +++++++ composer.json | 2 +- docker-compose.yml | 16 ++++++++++++++++ 5 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4b3a84e --- /dev/null +++ b/.dockerignore @@ -0,0 +1,9 @@ +.git +.gitignore +README.md +.env.example +vendor/ +storage/database.sqlite +storage/logs/ +.DS_Store +*.log \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4bacd9e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ +FROM php:8.4-cli + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + git \ + unzip \ + libzip-dev \ + libsqlite3-dev \ + sqlite3 \ + && docker-php-ext-install zip pdo_sqlite \ + && rm -rf /var/lib/apt/lists/* + +# Install Composer +COPY --from=composer:latest /usr/bin/composer /usr/bin/composer + +# Set working directory +WORKDIR /app + +# Copy composer files +COPY composer.json composer.lock ./ + +# Install PHP dependencies +RUN composer install --no-dev --optimize-autoloader --no-interaction + +# Copy application code +COPY . . + +# Create non-root user +RUN groupadd -r appuser && useradd -r -g appuser appuser + +# Set permissions +RUN chmod +x bin/check-and-post \ + && mkdir -p storage \ + && touch storage/database.sqlite \ + && chmod 666 storage/database.sqlite \ + && chmod 755 storage \ + && chown -R appuser:appuser /app + +USER appuser + +CMD ["php", "-f", "bin/check-and-post"] \ No newline at end of file diff --git a/bootstrap/database.php b/bootstrap/database.php index a27ce16..5b1a33e 100644 --- a/bootstrap/database.php +++ b/bootstrap/database.php @@ -2,6 +2,13 @@ use Illuminate\Database\Capsule\Manager as Capsule; +// Define base_path function if not exists +if (!function_exists('base_path')) { + function base_path($path = '') { + return __DIR__ . '/../' . $path; + } +} + $capsule = new Capsule; $capsule->addConnection([ diff --git a/composer.json b/composer.json index f65f380..bbe920f 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "license": "GPL-3.0-only", "autoload": { "psr-4": { - "Myrmidex\\LemmyPoster\\": "src/" + "Feddev\\LemmyArticlePoster\\": "src/" } }, "authors": [ diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..62e0051 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,16 @@ +services: + app: + build: . + container_name: lemmy-poster + working_dir: /app + volumes: + - .:/app + - storage:/app/storage + command: ["sh", "-c", "while true; do php bin/check-and-post; sleep 300; done"] + environment: + - PHP_ENV=production + restart: unless-stopped + +volumes: + storage: + driver: local \ No newline at end of file