Skip to content

fix(docker): bind postgres to localhost only - #686

Merged
zmanian merged 3 commits into
nearai:mainfrom
nick-stebbings:pr/docker-localhost
Mar 8, 2026
Merged

zmanian merged 3 commits into
nearai:mainfrom
nick-stebbings:pr/docker-localhost

Conversation

@nick-stebbings

Copy link
Copy Markdown
Contributor

Summary

The default docker-compose.yml exposes postgres on all interfaces (0.0.0.0:5432), making it reachable from the local network in any docker compose deployment. This binds it to 127.0.0.1:5432:5432 so it's only accessible from the host machine.

Test plan

  • docker compose up still works
  • psql -h 127.0.0.1 -U ironclaw -d ironclaw connects
  • Postgres is not reachable from other machines on the network

🤖 Generated with Claude Code

5432:5432 → 127.0.0.1:5432:5432 — the default docker-compose.yml
exposed postgres on all interfaces, making it reachable from the
local network in any docker compose deployment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions github-actions Bot added the size: XS < 10 changed lines (excluding docs) label Mar 7, 2026
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request enhances the default security configuration of the Docker Compose setup by ensuring the PostgreSQL database is only accessible from the host machine. This change prevents unintended network exposure of the database to other machines on the local network, thereby improving the security posture of the development environment by default.

Highlights

  • Postgres Binding: The PostgreSQL service in docker-compose.yml was updated to bind to 127.0.0.1 (localhost) instead of 0.0.0.0, restricting its network accessibility to the host machine only.
Changelog
  • docker-compose.yml
    • Updated the PostgreSQL service port binding to localhost.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

@github-actions github-actions Bot added risk: low Changes to docs, tests, or low-risk modules contributor: new First-time contributor labels Mar 7, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request correctly enhances security by binding the PostgreSQL service in the Docker Compose setup to localhost. This prevents unintended exposure on local networks. My review includes one suggestion to further improve the configuration's flexibility for developers by making the host port configurable, which can help avoid common port conflicts in local environments.

Comment thread docker-compose.yml
image: pgvector/pgvector:pg16
ports:
- "5432:5432"
- "127.0.0.1:5432:5432"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

To improve flexibility for local development, consider making the host port configurable using an environment variable. This will prevent potential port conflicts if a developer already has a service running on port 5432. Using a variable with a default value allows for easy overrides without breaking the default setup.

      - "127.0.0.1:${POSTGRES_PORT:-5432}:5432"

@zmanian zmanian left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Good security fix. The default "5432:5432" binding exposes Postgres on all interfaces with hardcoded dev credentials. Binding to 127.0.0.1 restricts to the host only. Inter-container connectivity via Docker's internal DNS is unaffected.

@zmanian
zmanian enabled auto-merge (squash) March 8, 2026 19:54

@zmanian zmanian left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM - Docker compose security fix.

@zmanian zmanian added the skip-regression-check Bypass regression test CI gate (tests exist but not in tests/ dir) label Mar 8, 2026
@zmanian
zmanian merged commit 605a4ba into nearai:main Mar 8, 2026
22 checks passed
bkutasi pushed a commit to bkutasi/ironclaw that referenced this pull request Mar 28, 2026
5432:5432 → 127.0.0.1:5432:5432 — the default docker-compose.yml
exposed postgres on all interfaces, making it reachable from the
local network in any docker compose deployment.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Zaki Manian <zaki@iqlusion.io>
drchirag1991 pushed a commit to drchirag1991/ironclaw that referenced this pull request Apr 8, 2026
5432:5432 → 127.0.0.1:5432:5432 — the default docker-compose.yml
exposed postgres on all interfaces, making it reachable from the
local network in any docker compose deployment.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Zaki Manian <zaki@iqlusion.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor: new First-time contributor risk: low Changes to docs, tests, or low-risk modules size: XS < 10 changed lines (excluding docs) skip-regression-check Bypass regression test CI gate (tests exist but not in tests/ dir)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants