From 13db54ccce45ea0c90771af680273f738a2c68d8 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Thu, 28 Mar 2024 12:04:12 +0000 Subject: [PATCH] build(devcontainer): move dev docker files to .devcontainer and set dev environment in app service - add mailpit service to debug email - remove s3 service --- .../development => .devcontainer}/Dockerfile | 3 - .devcontainer/crontab | 1 + .devcontainer/devcontainer.json | 10 +-- .devcontainer/docker-compose.yml | 84 +++++++++++++++-- {initdb => .devcontainer/initdb}/01.sql | 0 crontab | 1 - docker-compose.yml | 90 ------------------- 7 files changed, 85 insertions(+), 104 deletions(-) rename {docker/development => .devcontainer}/Dockerfile (98%) create mode 100644 .devcontainer/crontab rename {initdb => .devcontainer/initdb}/01.sql (100%) delete mode 100644 crontab delete mode 100644 docker-compose.yml diff --git a/docker/development/Dockerfile b/.devcontainer/Dockerfile similarity index 98% rename from docker/development/Dockerfile rename to .devcontainer/Dockerfile index edb0ac01..c14f1bbf 100644 --- a/docker/development/Dockerfile +++ b/.devcontainer/Dockerfile @@ -8,9 +8,6 @@ FROM php:8.1-fpm LABEL maintainer="Yassine Doghri " -COPY . /castopod -WORKDIR /castopod - # Install composer COPY --from=composer:2 /usr/bin/composer /usr/bin/composer diff --git a/.devcontainer/crontab b/.devcontainer/crontab new file mode 100644 index 00000000..8cef165a --- /dev/null +++ b/.devcontainer/crontab @@ -0,0 +1 @@ +* * * * * /usr/local/bin/php /workspaces/castopod/spark tasks:run >> /dev/null 2>&1 diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index a48dc081..70877355 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,13 +1,13 @@ // For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at: // https://github.com/microsoft/vscode-dev-containers/tree/v0.117.1/containers/docker-existing-dockerfile { - "name": "Castopod dev", - "dockerComposeFile": ["../docker-compose.yml", "./docker-compose.yml"], + "name": "castopod.local", + "dockerComposeFile": ["./docker-compose.yml"], "service": "app", - "workspaceFolder": "/castopod", + "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}", "postCreateCommand": "composer install && pnpm install && pnpm run build:static && php spark migrate --all && php spark db:seed DevSeeder", - "postStartCommand": "crontab ./crontab && cron && php spark serve --host 0.0.0.0", - "postAttachCommand": "crontab ./crontab && service cron reload", + "postStartCommand": "git config --global --add safe.directory ${containerWorkspaceFolder} && crontab .devcontainer/crontab && cron && php spark serve --host 0.0.0.0", + "postAttachCommand": "crontab .devcontainer/crontab && service cron reload", "shutdownAction": "stopCompose", "features": { "ghcr.io/devcontainers/features/git:1": {}, diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index ec3827cf..73110337 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -1,10 +1,84 @@ version: "3" + services: app: + build: + context: . + dockerfile: Dockerfile + ports: + - 8080:8080 volumes: - # Mounts the project folder to '/workspace'. While this file is in .devcontainer, - # mounts are relative to the first file in the list, which is a level up. - - .:/castopod:cached + - ../..:/workspaces:cached + environment: + CI_ENVIRONMENT: development + vite_environment: development + app_forceGlobalSecureRequests: false + app_baseURL: http://localhost:8080/ + media_baseURL: http://localhost:8080/ + admin_gateway: cp-admin + auth_gateway: cp-auth + analytics_salt: dev_analytics_salt + database_default_hostname: mariadb + database_default_database: castopod + database_default_username: castopod + database_default_password: castopod + database_default_DBPrefix: cp_ + restapi_enabled: true + email_fromEmail: hello@castopod.local + email_SMTPCrypto: "" + email_SMTPHost: mailpit + email_SMTPUser: castopod + email_SMTPPass: castopod + email_SMTPPort: 1025 + depends_on: + - redis + - mariadb - # Overrides default command so things don't shut down after the process ends. - command: /bin/sh -c "while sleep 1000; do :; done" + redis: + image: redis:alpine + volumes: + - redis:/data + + mariadb: + image: mariadb:10.2 + volumes: + - ./initdb:/docker-entrypoint-initdb.d + - mariadb:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: castopod + MYSQL_USER: castopod + MYSQL_PASSWORD: castopod + + phpmyadmin: + image: phpmyadmin/phpmyadmin:latest + environment: + PMA_HOST: mariadb + PMA_PORT: 3306 + UPLOAD_LIMIT: 300M + ports: + - 8888:80 + volumes: + - phpmyadmin:/sessions + depends_on: + - mariadb + + mailpit: + image: axllent/mailpit + restart: always + volumes: + - mailpit:/data + ports: + - 8025:8025 + - 1025:1025 + environment: + MP_MAX_MESSAGES: 5000 + MP_DATA_FILE: /data/mailpit.db + MP_SMTP_AUTH_ACCEPT_ANY: 1 + MP_SMTP_AUTH_ALLOW_INSECURE: 1 + +volumes: + redis: + mariadb: + phpmyadmin: + mailpit: diff --git a/initdb/01.sql b/.devcontainer/initdb/01.sql similarity index 100% rename from initdb/01.sql rename to .devcontainer/initdb/01.sql diff --git a/crontab b/crontab deleted file mode 100644 index 660baa55..00000000 --- a/crontab +++ /dev/null @@ -1 +0,0 @@ -* * * * * /usr/local/bin/php /castopod/spark tasks:run >> /dev/null 2>&1 diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index f9cbabab..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,90 +0,0 @@ -version: "3.8" - -networks: - castopod: - ipam: - config: - - subnet: 172.31.0.0/24 - -services: - app: - build: - context: . - dockerfile: docker/development/Dockerfile - container_name: app - command: /bin/sh -c "crontab ./crontab && cron && service cron reload && php spark serve --host 0.0.0.0" - ports: - - 8080:8080 - volumes: - - .:/castopod - depends_on: - - redis - - mariadb - networks: - castopod: - ipv4_address: 172.31.0.2 - - redis: - image: redis:alpine - container_name: castopod_redis - ports: - - 6379:6379 - volumes: - - redis:/data - networks: - castopod: - ipv4_address: 172.31.0.3 - - mariadb: - image: mariadb:10.2 - container_name: castopod_mariadb - ports: - - 3306:3306 - volumes: - - ./initdb:/docker-entrypoint-initdb.d - - mariadb:/var/lib/mysql - environment: - MYSQL_ROOT_PASSWORD: root - MYSQL_DATABASE: castopod - MYSQL_USER: castopod - MYSQL_PASSWORD: castopod - networks: - castopod: - ipv4_address: 172.31.0.4 - - phpmyadmin: - image: phpmyadmin/phpmyadmin:latest - container_name: castopod_phpmyadmin - environment: - PMA_HOST: mariadb - PMA_PORT: 3306 - UPLOAD_LIMIT: 300M - ports: - - 8888:80 - volumes: - - phpmyadmin:/sessions - depends_on: - - mariadb - networks: - castopod: - ipv4_address: 172.31.0.5 - - s3: - image: adobe/s3mock:latest - container_name: castopod_s3 - environment: - - initialBuckets=castopod - - debug=true - - root=/data - ports: - - 9090:9090 - volumes: - - ./data/s3:/data:cached - networks: - castopod: - ipv4_address: 172.31.0.6 - -volumes: - redis: - mariadb: - phpmyadmin: