Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .env.docker.example
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,13 @@
# docker-compose.npm.yml interpolates the variables below; pin them so the
# server-side `cp .env.docker.example .env.docker` yields a working --env-file.

# ---- Released image (required) ----
# The NPM deployment pulls the released, attested image from GHCR; it never builds.
# Pin a DIGEST, not a tag: no `latest` tag is published, and only a digest is immutable.
# Resolve it from the release asset `application-release-manifest.json` (.image.digest),
# or: docker buildx imagetools inspect ghcr.io/berntpopp/stringdb-link:<version>
STRINGDB_LINK_IMAGE=ghcr.io/berntpopp/stringdb-link@sha256:0000000000000000000000000000000000000000000000000000000000000000

# ---- Nginx Proxy Manager (docker-compose.npm.yml) ----
# External NPM network the container joins for reverse-proxy routing.
NPM_SHARED_NETWORK_NAME=npm_default
Expand Down
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,20 @@ All notable changes to this project are documented here.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [4.0.6] - 2026-07-14

### Changed

- **The NPM deployment pulls the released image instead of building from source.**
`docker/docker-compose.npm.yml` is a pure overlay on `docker-compose.yml`, which
defines `build:` — so the deployed chain (`docker-compose.yml -f
docker-compose.npm.yml`) inherited it and the server rebuilt the image on every
deploy, even though CI had already published an attested, digest-addressable image
to GHCR. The overlay now does `build: !reset null` and requires `STRINGDB_LINK_IMAGE`
pinned to a digest, failing closed when it is unset. Nothing else changed:
`container_name` (`stringdb_link_server`, which NPM forwards to), the Compose project
name, the healthcheck, the hardening block, networks and `command` are all preserved.

## [Unreleased]

## [4.0.5] - 2026-07-13
Expand Down
8 changes: 8 additions & 0 deletions docker/docker-compose.npm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@ name: stringdb-link-npm

services:
stringdb-link:
# Deploy pulls the released, attested image; it never builds from source.
# `!reset` is required: the base compose file defines `build:`, and without this
# the merged model would still be buildable.
# Pin a digest, not a tag: there is no `latest`, and only a digest is immutable.
build: !reset null
image: ${STRINGDB_LINK_IMAGE:?Set STRINGDB_LINK_IMAGE to ghcr.io/berntpopp/stringdb-link@sha256:<digest>}
pull_policy: missing

# Production environment optimized for NPM
environment:
LOGGING__LEVEL: INFO
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "hatchling.build"

[project]
name = "stringdb-link"
version = "4.0.5"
version = "4.0.6"
description = "High-performance unified API server for STRING protein-protein interaction database with MCP integration"
readme = "README.md"
license = { text = "MIT" }
Expand Down
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.