From 9d144931b34b9a73cd00a82de29e67deae7df3e8 Mon Sep 17 00:00:00 2001 From: Ram Date: Sat, 29 Aug 2026 20:07:19 +0530 Subject: [PATCH 1/2] feat: Add DevContainer and Codespaces support for develop (FrankenPHP) --- .devcontainer/devcontainer.json | 61 ++++++++++++++++++++++++++ Dockerfile | 4 +- docker/php/conf.d/bewelcome.xdebug.ini | 6 +++ docker/php/docker-entrypoint.sh | 4 +- 4 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 .devcontainer/devcontainer.json create mode 100644 docker/php/conf.d/bewelcome.xdebug.ini diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..9cd31c0e5d --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,61 @@ +{ + "name": "BeWelcome Rox (Develop)", + "dockerComposeFile": [ + "../docker-compose.yml", + "../docker-compose.override.yml.dist" + ], + "service": "php", + "workspaceFolder": "/srv/bewelcome", + "overrideCommand": false, + "forwardPorts": [80, 1080, 9306, 9308], + "portsAttributes": { + "80": { + "label": "BeWelcome App (FrankenPHP)", + "onAutoForward": "openBrowser" + }, + "1080": { + "label": "MailCatcher Web UI", + "onAutoForward": "notify" + }, + "9306": { + "label": "Manticore MySQL protocol", + "onAutoForward": "silent" + }, + "9308": { + "label": "Manticore HTTP API", + "onAutoForward": "silent" + } + }, + "postCreateCommand": "bzip2 -ckd docker/languages.sql.bz2 > docker/db/languages.sql && bzip2 -ckd docker/words.sql.bz2 > docker/db/words.sql", + "hostRequirements": { + "cpus": 2, + "memory": "4gb", + "storage": "32gb" + }, + "customizations": { + "vscode": { + "extensions": [ + "bmewburn.vscode-intelephense-client", + "xdebug.php-debug", + "symfony-vscode.symfony-vscode", + "bradlc.vscode-tailwindcss", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "mikestead.dotenv", + "ms-azuretools.vscode-docker", + "GitHub.vscode-pull-request-github" + ], + "settings": { + "php.suggest.basic": false, + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "[php]": { + "editor.defaultFormatter": "bmewburn.vscode-intelephense-client" + }, + "intelephense.environment.phpVersion": "8.4.0", + "intelephense.files.maxSize": 5000000, + "xdebug.remote_enable": true + } + } + } +} diff --git a/Dockerfile b/Dockerfile index fb6d217bbe..38c31793f3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -192,9 +192,11 @@ RUN set -eux; \ chmod a+w "$PHP_INI_DIR"; \ mkdir -p vendor var/cache var/log; \ chmod -R a+w vendor; \ - chmod -R 777 var + chmod -R 777 var; \ + install-php-extensions xdebug COPY docker/frankenphp/Caddyfile /etc/caddy/Caddyfile +COPY docker/php/conf.d/bewelcome.xdebug.ini $PHP_INI_DIR/conf.d/xdebug.ini COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint RUN chmod +x /usr/local/bin/docker-entrypoint diff --git a/docker/php/conf.d/bewelcome.xdebug.ini b/docker/php/conf.d/bewelcome.xdebug.ini new file mode 100644 index 0000000000..20ce85ae0e --- /dev/null +++ b/docker/php/conf.d/bewelcome.xdebug.ini @@ -0,0 +1,6 @@ +; Xdebug configuration for development +; Disabled by default for performance. To enable, you can set XDEBUG_MODE=debug +xdebug.mode=off +xdebug.client_host=host.docker.internal +xdebug.start_with_request=yes +xdebug.discover_client_host=1 diff --git a/docker/php/docker-entrypoint.sh b/docker/php/docker-entrypoint.sh index 7f4886587b..ce2fb36d4a 100755 --- a/docker/php/docker-entrypoint.sh +++ b/docker/php/docker-entrypoint.sh @@ -106,9 +106,9 @@ if [ "$1" = 'frankenphp' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ] || [ echo "Database created." echo "Importing translations" - if [ -f docker/db/word.sql ]; then + if [ -f docker/db/words.sql ]; then echo "Yepp, really. Importing translations" - mariadb "$database_name" -u "$database_user" -p"$database_password" -h "$database_host" --port="$database_port" < docker/db/word.sql + mariadb "$database_name" -u "$database_user" -p"$database_password" -h "$database_host" --port="$database_port" < docker/db/words.sql fi if [ -f docker/db/geonamesadminunits.sql ]; then mariadb "$database_name" -u "$database_user" -p"$database_password" -h "$database_host" --port="$database_port" < docker/db/geonamesadminunits.sql From f1b7e4718866287665452c9471f2b0a82d7d6780 Mon Sep 17 00:00:00 2001 From: Ram Date: Sat, 29 Aug 2026 22:13:11 +0530 Subject: [PATCH 2/2] chore: replace mailcatcher with mailpit for local dev --- .devcontainer/devcontainer.json | 2 +- docker-compose.yml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9cd31c0e5d..29a5ebc6df 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -14,7 +14,7 @@ "onAutoForward": "openBrowser" }, "1080": { - "label": "MailCatcher Web UI", + "label": "MailPit Web UI", "onAutoForward": "notify" }, "9306": { diff --git a/docker-compose.yml b/docker-compose.yml index d0372ab1fd..3f37e271c0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -58,7 +58,10 @@ services: # - ./docker/manticore/manticore.conf:/etc/manticoresearch/manticore.conf mailer: - image: tophfr/mailcatcher + image: axllent/mailpit + environment: + MP_SMTP_BIND_ADDR: "0.0.0.0:25" + MP_UI_BIND_ADDR: "0.0.0.0:80" volumes: db-data: {}