Skip to content

ajuste docker #1686

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
Open

ajuste docker #1686

wants to merge 11 commits into from

Conversation

borgesthiago
Copy link

@borgesthiago borgesthiago commented Jul 4, 2025

Summary by Sourcery

Consolidate Dockerfile stages with a shared base image, introduce a dedicated development stage, and align docker-compose configurations to build from the correct targets and update environment settings.

New Features:

  • Add a dedicated dev stage in the Dockerfile for local development with live code mounting and npm run dev:server entrypoint.

Enhancements:

  • Extract common dependencies into a new base stage and reorganize builder stage accordingly.
  • Update Postgres credentials and comment out the custom command in production compose for simpler setup.

Deployment:

  • Adjust docker-compose.yaml to build the API service from the final target instead of using a prebuilt image.
  • Configure docker-compose.dev.yaml to build from the dev stage and mount the project directory for live reload.

Copy link
Contributor

sourcery-ai bot commented Jul 4, 2025

Reviewer's Guide

This PR refactors the Docker build process by introducing a reusable base stage, adding a dedicated development stage in the Dockerfile with its own entrypoint, and updating the production and development compose files to build locally (using stage targeting), while also refining the Postgres service configuration and volume mounts.

File-Level Changes

Change Details Files
Restructure Dockerfile into distinct base, builder, dev, and final stages
  • Rename original builder stage to 'base'
  • Re-instantiate a builder stage from base for dependency installation and build
  • Introduce a 'dev' stage installing dependencies, copying source, and setting a dev entrypoint
  • Preserve final production stage based on base
Dockerfile
Update docker-compose.yaml to build the final image locally and adjust Postgres settings
  • Replace external image reference with a build block targeting 'final' stage
  • Comment out custom Postgres command
  • Change Postgres user/password to 'evolution'/'postgres'
docker-compose.yaml
Adjust docker-compose.dev.yaml to use the new dev stage and sync source
  • Configure build to target 'dev' stage
  • Add host volume mount of entire repo into container
docker-compose.dev.yaml

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey @borgesthiago - I've reviewed your changes - here's some feedback:

  • The dev stage in the Dockerfile re-installs dependencies and repeats apk installs—consider basing it on the builder stage (FROM builder AS dev) to reuse the build cache and avoid duplication.
  • In docker-compose.dev.yaml, mounting ./:/evolution will overwrite your container’s node_modules—add a dedicated volume for node_modules (e.g. /evolution/node_modules) or adjust the bind mount to prevent losing installed deps.
  • Hardcoding Postgres credentials in docker-compose.yaml can lead to inconsistencies—extract these into an .env file or use environment variables via env_file to manage credentials across environments.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The dev stage in the Dockerfile re-installs dependencies and repeats apk installs—consider basing it on the builder stage (FROM builder AS dev) to reuse the build cache and avoid duplication.
- In docker-compose.dev.yaml, mounting `./:/evolution` will overwrite your container’s node_modules—add a dedicated volume for node_modules (e.g. `/evolution/node_modules`) or adjust the bind mount to prevent losing installed deps.
- Hardcoding Postgres credentials in docker-compose.yaml can lead to inconsistencies—extract these into an .env file or use environment variables via `env_file` to manage credentials across environments.

## Individual Comments

### Comment 1
<location> `Dockerfile:43` </location>
<code_context>
+
+RUN npm install
+
+ENTRYPOINT ["/bin/bash", "-c", "npm run dev:server" ]
+
 FROM node:20-alpine AS final
</code_context>

<issue_to_address>
ENTRYPOINT with bash -c can complicate signal handling.

This approach may prevent signals like SIGTERM from reaching the Node.js process, impacting graceful shutdown. Consider running the Node.js process directly for better signal handling.
</issue_to_address>

<suggested_fix>
<<<<<<< SEARCH
ENTRYPOINT ["/bin/bash", "-c", "npm run dev:server" ]
=======
ENTRYPOINT ["npm", "run", "dev:server"]
>>>>>>> REPLACE

</suggested_fix>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.


RUN npm install

ENTRYPOINT ["/bin/bash", "-c", "npm run dev:server" ]
Copy link
Contributor

Choose a reason for hiding this comment

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

suggestion (bug_risk): ENTRYPOINT with bash -c can complicate signal handling.

This approach may prevent signals like SIGTERM from reaching the Node.js process, impacting graceful shutdown. Consider running the Node.js process directly for better signal handling.

Suggested change
ENTRYPOINT ["/bin/bash", "-c", "npm run dev:server" ]
ENTRYPOINT ["npm", "run", "dev:server"]

Copy link

@matheus-de-araujo matheus-de-araujo left a comment

Choose a reason for hiding this comment

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

congratulations, it was well organized

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants