Skip to content

Conversation

terabytesoftw
Copy link
Member

@terabytesoftw terabytesoftw commented Jul 10, 2025

Q A
Is bugfix ✔️
New feature
Breaks BC

Summary by CodeRabbit

  • New Features

    • Added Docker Compose configurations for both Apache and Nginx environments, enabling easy setup and switching between web servers.
    • Introduced custom Dockerfiles and configuration files for Apache and Nginx, including Supervisord integration for process management.
    • Implemented queue worker management with multiple workers for background task processing.
    • Provided optimized PHP and web server configurations for improved performance and security.
    • Added GitHub Actions workflow for automated building, testing, and security scanning of Docker images.
  • Style

    • Updated CSS to remove the background color from the verification code image in dark theme mode.

Copy link

coderabbitai bot commented Jul 10, 2025

Warning

Rate limit exceeded

@terabytesoftw has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 15 minutes and 5 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 13a536f and f5b000d.

📒 Files selected for processing (3)
  • .github/workflows/docker.yml (1 hunks)
  • docker/nginx/Dockerfile (1 hunks)
  • tests/Unit/ContactControllerTest.php (2 hunks)

Walkthrough

This update introduces a complete Docker-based development and deployment environment for a Yii2 PHP application, supporting both Apache and Nginx web servers. It adds Docker Compose files, Dockerfiles, web server configurations, PHP settings, Supervisor process management, and supporting scripts for both web stacks. Additionally, a minor CSS adjustment is made for dark theme compatibility. A GitHub Actions workflow is added to automate building, testing, and running the application within Docker containers.

Changes

File(s) Change Summary
docker-compose.yml, docker-compose.nginx.yml Added Docker Compose files for Apache and Nginx services, defining build context, image tags, volumes, ports, and environment variables.
docker/apache/Dockerfile, docker/nginx/Dockerfile Added Dockerfiles for Apache and Nginx stacks, installing Supervisor, copying web server and PHP configs, and setting supervisord as entrypoint.
docker/apache/apache.conf, docker/apache/vhost.conf, docker/nginx/nginx.conf, docker/nginx/default.conf Added full web server configuration files for Apache and Nginx, including main server configs, virtual hosts, and security headers.
docker/apache/supervisord/conf.d/.conf, docker/apache/supervisord/supervisord.conf, docker/apache/supervisord/log/.gitignore, docker/nginx/supervisord/conf.d/.conf, docker/nginx/supervisord/supervisord.conf, docker/nginx/supervisord/log/.gitignore Added Supervisor configuration files and .gitignore rules for managing web server, PHP-FPM (Nginx), and queue worker processes in both stacks.
docker/php/php.ini Added custom PHP configuration optimized for Docker environment with performance and security settings.
src/framework/resource/css/site.css Removed background-color from #contactform-verifycode-image selector under dark theme.
.github/workflows/docker.yml Added GitHub Actions workflow for building, testing, and running the application inside Apache and Nginx Docker containers.

Sequence Diagram(s)

sequenceDiagram
    participant Developer
    participant DockerCompose
    participant Supervisor
    participant WebServer (Apache/Nginx)
    participant PHP-FPM
    participant Yii2App

    Developer->>DockerCompose: docker-compose up (apache or nginx)
    DockerCompose->>Supervisor: Start supervisord in container
    Supervisor->>WebServer: Launch Apache or Nginx (foreground)
    alt Nginx stack
        Supervisor->>PHP-FPM: Launch PHP-FPM (foreground)
    end
    Supervisor->>Yii2App: Launch queue workers (4 processes)
    Developer->>WebServer: Access app via mapped port (8080/8081)
    alt Nginx stack
        WebServer->>PHP-FPM: Proxy PHP requests
    end
    WebServer->>Yii2App: Serve application content
Loading

Poem

🐇
In Docker burrows, servers rise—
Apache, Nginx, side by side!
Supervisor keeps them in line,
PHP and queues working fine.
With configs neat and logs ignored,
Our bunny’s web dreams are restored!
Hop on, deploy, let code be adored.

🥕✨

✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

codecov bot commented Jul 10, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 100.00%. Comparing base (903c699) to head (f5b000d).
Report is 7 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff             @@
##                main      #102   +/-   ##
===========================================
  Coverage     100.00%   100.00%           
  Complexity        36        36           
===========================================
  Files             23        23           
  Lines            621       621           
===========================================
  Hits             621       621           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🔭 Outside diff range comments (1)
docker/apache/supervisord/supervisord.conf (1)

10-11: supervisorctl will not work without a unix_http_server endpoint

[supervisorctl] alone is a no-op—supervisorctl needs an RPC socket defined in [unix_http_server] (and usually [rpcinterface:supervisor]).

[unix_http_server]
file = /var/run/supervisor.sock
chmod = 0700

[supervisorctl]
serverurl = unix:///var/run/supervisor.sock

Add these blocks or drop the empty section to avoid confusion.

♻️ Duplicate comments (2)
docker/nginx/supervisord/log/.gitignore (1)

1-2: Same comment as for the Apache log directory.

Rule is correct and consistent.

docker/apache/supervisord/conf.d/queue.conf (1)

8-9: Same logging caveat as the Nginx variant – see earlier comment on docker/nginx/supervisord/conf.d/queue.conf.

🧹 Nitpick comments (12)
docker/apache/supervisord/conf.d/apache2.conf (1)

1-4: Consider simplifying the command and adding group-kill flags.

apache2ctl -D FOREGROUND already sources envvars and is the canonical foreground launcher.
Also add the same signal-propagation options as for Nginx to avoid zombie workers.

-command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"
+command=/usr/sbin/apache2ctl -D FOREGROUND
+stopasgroup=true
+killasgroup=true
+stopsignal=WINCH        ; graceful stop for Apache
docker/nginx/supervisord/supervisord.conf (1)

2-3: Discarding all supervisord logs hampers debugging

logfile = /dev/null means every supervisor message disappears.
At minimum pipe to stdout/stderr so container logs keep basic lifecycle info.

-logfile = /dev/null
+logfile = /dev/stdout
+logfile_maxbytes = 0

If absolute silence is required, consider loglevel=error instead.

docker/apache/vhost.conf (1)

27-28: Send Apache logs to stdout/stderr for Docker friendliness

Inside containers it is conventional to forward logs to the main process output instead of /var/log.

-ErrorLog ${APACHE_LOG_DIR}/error.log
-CustomLog ${APACHE_LOG_DIR}/access.log combined
+ErrorLog /proc/self/fd/2
+CustomLog /proc/self/fd/1 combined

This keeps docker logs usable and avoids managing log rotation.

docker/nginx/nginx.conf (1)

35-36: Pipe Nginx logs to Docker logger

Same rationale as Apache:

-access_log /var/log/nginx/access.log main;
-error_log  /var/log/nginx/error.log warn;
+access_log /proc/self/fd/1  main;
+error_log  /proc/self/fd/2  warn;

Avoids log files that grow unbounded inside the container.

docker-compose.yml (1)

10-11: Host-specific Composer cache path may break on non-Unix hosts

~/.composer-docker/cache assumes *nix home resolution and will not work on Windows without WSL. Consider switching to a named volume:

volumes:
  - composer-cache:/root/.composer/cache
...
volumes:
  composer-cache:

Keeps cross-platform setups friction-free.

docker/nginx/Dockerfile (1)

10-12: Package layer could be slimmer and reproducible

Combine apt-get update, install and cleanup in a single layer and add --no-install-recommends already used, plus set -euo pipefail for robustness:

RUN set -eux; \
    apt-get update; \
    apt-get install --no-install-recommends -y supervisor; \
    rm -rf /var/lib/apt/lists/*

Minor, but keeps the image smaller and fails fast on errors.

docker-compose.nginx.yml (3)

10-13: Host-home Composer cache mount is fragile across OSes

~/.composer-docker/cache relies on shell expansion that will not resolve on Windows or when Docker runs as a system service without a user shell.
Consider parameterising the path or using an absolute path under the project directory to ensure portability:

-      - ~/.composer-docker/cache:/root/.composer/cache:delegated
+      - ./docker/cache/composer:/root/.composer/cache:delegated

10-13: delegated mount option is Docker-Desktop-only

The :delegated consistency flag is ignored on Linux and will trigger a warning on Docker Engine < 17.04. Use a standard bind mount unless you explicitly target Docker Desktop:

-      - ./docker/cache/composer:/root/.composer/cache:delegated
+      - ./docker/cache/composer:/root/.composer/cache

7-8: Tag the built image or drop the image: key to avoid ambiguity

When build: is present, the image: tag is used only as the name of the resulting image. If you also push/pull this tag from a registry, the dual behaviour can be confusing.
Either rename it to something versioned (e.g. yii2-nginx:8.4-fpm) or remove the key and let Compose generate a local tag.

docker/nginx/default.conf (2)

11-15: Minor typos and deprecated header

  1. Comment typo: “decurity” → “security”.
  2. X-XSS-Protection is obsolete in modern browsers and can be removed.
-    # decurity headers
+    # security headers
-    add_header X-XSS-Protection "1; mode=block" always;

65-69: Non-English comment and hard-coded path

“ajustado a tu estructura” is Spanish; keep comments English for consistency.
Also consider parameterising the path instead of hard-coding /vendor|/runtime/.

-    # deny access to PHP files in specific directories (ajustado a tu estructura)
+    # deny access to PHP files under vendor/ or runtime/ for additional safety
docker/apache/apache.conf (1)

90-93: Timeout 500 is unusually high

A 500-second socket timeout can tie up worker threads and hurt concurrency. The common range is 60-120 s; anything longer is generally pushed to upstream services (e.g. FPM, queue).

-Timeout 500
+# Timeout tuned for long-running uploads; lower if not required
+Timeout 120
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2ba182b and a558472.

📒 Files selected for processing (19)
  • docker-compose.nginx.yml (1 hunks)
  • docker-compose.yml (1 hunks)
  • docker/apache/Dockerfile (1 hunks)
  • docker/apache/apache.conf (1 hunks)
  • docker/apache/supervisord/conf.d/apache2.conf (1 hunks)
  • docker/apache/supervisord/conf.d/queue.conf (1 hunks)
  • docker/apache/supervisord/log/.gitignore (1 hunks)
  • docker/apache/supervisord/supervisord.conf (1 hunks)
  • docker/apache/vhost.conf (1 hunks)
  • docker/nginx/Dockerfile (1 hunks)
  • docker/nginx/default.conf (1 hunks)
  • docker/nginx/nginx.conf (1 hunks)
  • docker/nginx/supervisord/conf.d/nginx.conf (1 hunks)
  • docker/nginx/supervisord/conf.d/php-fpm.conf (1 hunks)
  • docker/nginx/supervisord/conf.d/queue.conf (1 hunks)
  • docker/nginx/supervisord/log/.gitignore (1 hunks)
  • docker/nginx/supervisord/supervisord.conf (1 hunks)
  • docker/php/php.ini (1 hunks)
  • src/framework/resource/css/site.css (0 hunks)
💤 Files with no reviewable changes (1)
  • src/framework/resource/css/site.css
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: terabytesoftw
PR: yii2-extensions/app-basic#97
File: docs/installation.md:5-8
Timestamp: 2025-07-09T14:52:41.210Z
Learning: The Yii2 framework has multiple active branches including the 2.0.x branch (maintenance/LTS) and the 22.0 branch (development). When specifying version requirements, "2.0.53+ or 22.x" is accurate and should not be changed to only reference the 2.x branch.
Learnt from: terabytesoftw
PR: yii2-extensions/app-basic#97
File: docs/installation.md:5-8
Timestamp: 2025-07-09T14:52:41.210Z
Learning: The Yii2 framework has multiple active branches including the 2.0.x branch (maintenance/LTS) and the 22.0 branch (development). When specifying version requirements, "2.0.53+ or 22.x" is accurate and should not be changed to only reference the 2.x branch.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: codeception / PHP 8.1-windows-latest
🔇 Additional comments (4)
docker/apache/supervisord/log/.gitignore (1)

1-2: Log directory ignore rule looks good.

Keeping the directory in the repo while ignoring its (potentially huge) runtime contents is standard practice.
No further action needed.

docker/php/php.ini (1)

14-15: opcache.validate_timestamps = 0 disables hot-reload – deliberate?

With timestamp validation turned off, PHP will not pick up file changes until the FPM/Apache process restarts.
Great for prod performance, painful for local development (the stated goal of these Docker files). If the images are intended for dev, consider enabling it or allowing override via an environment variable-driven .ini.

No code change suggested here – confirm intent.

docker-compose.yml (1)

3-7: image + build may cause unexpected cache behaviour

With both keys present Compose will tag the built image as yii2-apache:84, but will reuse a locally-cached image of that tag even when the Dockerfile changes unless --build is forced. If you always want a fresh build, drop the image: line; if you want to pull, drop build:.

docker/apache/apache.conf (1)

227-234: Good hardening directives

ServerTokens ProductOnly, ServerSignature Off, TraceEnable Off, and denying access to .git show solid security hygiene.

Comment on lines 2 to 10
[program:php-fpm]
command=/usr/local/sbin/php-fpm --nodaemonize
autostart=true
autorestart=true
priority=5
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Ensure PHP-FPM receives supervisor signals and logs correctly.

  1. PHP-FPM spawns children; propagate signals so they’re not left running.
  2. Unless error_log is set to /proc/self/fd/2 inside php-fpm.conf, stderr redirection here won’t catch engine errors. Clarify or document that in the image.
 priority=5
+killasgroup=true
+stopasgroup=true
+stopsignal=QUIT

If php-fpm.conf is still using the default file log, add:

error_log = /proc/self/fd/2

inside that config.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
[program:php-fpm]
command=/usr/local/sbin/php-fpm --nodaemonize
autostart=true
autorestart=true
priority=5
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:php-fpm]
command=/usr/local/sbin/php-fpm --nodaemonize
autostart=true
autorestart=true
priority=5
killasgroup=true
stopasgroup=true
stopsignal=QUIT
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
🤖 Prompt for AI Agents
In docker/nginx/supervisord/conf.d/php-fpm.conf around lines 2 to 10, ensure
PHP-FPM properly receives supervisor signals by configuring it to propagate
signals to child processes. Also, verify that the PHP-FPM configuration file
sets error_log to /proc/self/fd/2 so that stderr redirection in supervisord
captures PHP engine errors; if not, add the line error_log = /proc/self/fd/2 to
php-fpm.conf and document this requirement in the image setup.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (1)
docker/nginx/nginx.conf (1)

26-30: SSL configuration properly hardened

The TLS configuration now includes strong cipher suites, modern elliptic curves, and DH parameters as recommended in the previous review. This addresses the security concerns about weak cipher negotiation.

🧹 Nitpick comments (1)
.github/workflows/docker.yml (1)

27-31: Simplify Docker Compose installation

GitHub Actions runners typically have docker-compose pre-installed. Consider removing the manual installation steps to simplify the workflow.

-      - name: Install docker compose.
-        run: |
-          sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-          sudo chmod +x /usr/local/bin/docker-compose
-          docker-compose --version
+      - name: Verify docker compose.
+        run: docker-compose --version

If you need a specific version, use the docker/setup-buildx-action which can handle Docker Compose versions.

Also applies to: 75-79

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1141b3f and 13f6535.

📒 Files selected for processing (2)
  • .github/workflows/docker.yml (1 hunks)
  • docker/nginx/nginx.conf (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: terabytesoftw
PR: yii2-extensions/app-basic#102
File: docker/apache/Dockerfile:0-0
Timestamp: 2025-07-10T13:59:10.805Z
Learning: In docker/apache/Dockerfile, the queue.conf copy command is intentionally commented out because yii2-queue is optional. Users should uncomment the line `COPY docker/apache/supervisord/conf.d/queue.conf /etc/supervisor/conf.d/queue.conf` only if they install yii2-queue.
docker/nginx/nginx.conf (1)
Learnt from: terabytesoftw
PR: yii2-extensions/app-basic#102
File: docker/apache/Dockerfile:0-0
Timestamp: 2025-07-10T13:59:10.805Z
Learning: In docker/apache/Dockerfile, the queue.conf copy command is intentionally commented out because yii2-queue is optional. Users should uncomment the line `COPY docker/apache/supervisord/conf.d/queue.conf /etc/supervisor/conf.d/queue.conf` only if they install yii2-queue.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: codeception / PHP 8.1-windows-latest
  • GitHub Check: Test Apache Image
  • GitHub Check: Test Nginx Image
🔇 Additional comments (2)
docker/nginx/nginx.conf (1)

40-54: Gzip configuration follows best practices

The gzip settings are well-configured with appropriate MIME types and compression level. The inclusion of gzip_vary ensures proper cache behavior with proxies.

.github/workflows/docker.yml (1)

129-129: Ignore image name mismatch warning

The Docker Compose files explicitly define the images as yii2-apache:84 (in docker-compose.yml) and yii2-nginx:84 (in docker-compose.nginx.yml), matching the security-scan configuration. No changes are needed here.

Likely an incorrect or invalid review comment.

@terabytesoftw terabytesoftw linked an issue Jul 10, 2025 that may be closed by this pull request
2 tasks
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
docker/apache/Dockerfile (1)

23-27: Future-proof the Supervisor program copies
Only apache2.conf is copied; any additional program files added later will require editing the Dockerfile again. A wildcard keeps the Dockerfile agnostic while still leaving queue.conf commented in the repo for optional enablement.

-COPY docker/apache/supervisord/conf.d/apache2.conf /etc/supervisor/conf.d/apache2.conf
+# copy all *.conf files that are checked into conf.d
+COPY docker/apache/supervisord/conf.d/*.conf /etc/supervisor/conf.d/

Optional – feel free to keep the current explicit copy if you want stricter control.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 13f6535 and 13a536f.

⛔ Files ignored due to path filters (1)
  • composer.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • .github/workflows/docker.yml (1 hunks)
  • docker-compose.nginx.yml (1 hunks)
  • docker-compose.yml (1 hunks)
  • docker/apache/Dockerfile (1 hunks)
  • docker/nginx/Dockerfile (1 hunks)
  • tests/Unit/ContactControllerTest.php (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
  • docker-compose.yml
  • docker/nginx/Dockerfile
  • docker-compose.nginx.yml
  • .github/workflows/docker.yml
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: terabytesoftw
PR: yii2-extensions/app-basic#102
File: docker/apache/Dockerfile:0-0
Timestamp: 2025-07-10T13:59:10.805Z
Learning: In docker/apache/Dockerfile, the queue.conf copy command is intentionally commented out because yii2-queue is optional. Users should uncomment the line `COPY docker/apache/supervisord/conf.d/queue.conf /etc/supervisor/conf.d/queue.conf` only if they install yii2-queue.
docker/apache/Dockerfile (3)
Learnt from: terabytesoftw
PR: yii2-extensions/app-basic#102
File: docker/apache/Dockerfile:0-0
Timestamp: 2025-07-10T13:59:10.805Z
Learning: In docker/apache/Dockerfile, the queue.conf copy command is intentionally commented out because yii2-queue is optional. Users should uncomment the line `COPY docker/apache/supervisord/conf.d/queue.conf /etc/supervisor/conf.d/queue.conf` only if they install yii2-queue.
Learnt from: terabytesoftw
PR: yii2-extensions/app-basic#97
File: docs/installation.md:5-8
Timestamp: 2025-07-09T14:52:41.210Z
Learning: The Yii2 framework has multiple active branches including the 2.0.x branch (maintenance/LTS) and the 22.0 branch (development). When specifying version requirements, "2.0.53+ or 22.x" is accurate and should not be changed to only reference the 2.x branch.
Learnt from: terabytesoftw
PR: yii2-extensions/app-basic#97
File: docs/installation.md:5-8
Timestamp: 2025-07-09T14:52:41.210Z
Learning: The Yii2 framework has multiple active branches including the 2.0.x branch (maintenance/LTS) and the 22.0 branch (development). When specifying version requirements, "2.0.53+ or 22.x" is accurate and should not be changed to only reference the 2.x branch.
🪛 GitHub Actions: ecs
tests/Unit/ContactControllerTest.php

[warning] 16-16: PhpCsFixer: Docblock annotation '@phpstan-var Yii2|null $tester' should be '@phpstan-var Yii2|null'. Fixable by running with '--fix'.

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: codeception / PHP 8.2-windows-latest
🔇 Additional comments (2)
tests/Unit/ContactControllerTest.php (1)

38-38: LGTM! Improved test assertion.

The change from runtime assertion to PHPUnit assertion provides better test framework integration and clearer failure reporting. The descriptive error message about Yii2 module initialization is particularly helpful for debugging in the Docker-based testing environment.

docker/apache/Dockerfile (1)

1-1: Tag availability confirmed: 8.4-apache exists on Docker Hub
The yiisoftware/yii2-php:8.4-apache tag is published and valid—no change to the Dockerfile is needed.

Likely an incorrect or invalid review comment.

@terabytesoftw terabytesoftw merged commit 0cdf064 into main Jul 10, 2025
31 checks passed
@terabytesoftw terabytesoftw deleted the feat-mini-1 branch July 10, 2025 15:27
@terabytesoftw terabytesoftw added the enhancement New feature or request label Jul 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add docker images.

1 participant