Releases: testcontainers/testcontainers-go
v0.16.0
What's Changed
⚠️ Breaking Changes
-
feat: support native docker compose api (#476) @baez90
Docker Compose v2 is implemented in Go, and for that reason we have decided to provide native Go support to Compose, deprecating the shell-escape based
LocalDockerCompose
, which was invoking the local binary of compose. Given the version includes the Compose dependency, and the Docker folks added a replace directive until the upcoming Docker 22.06 release is out, we were forced to add it too, causing consumers of Testcontainers for Go to add the following replace directive too.
replace (
github.com/docker/cli => github.com/docker/cli v20.10.3-0.20221013132413-1d6c6e2367e2+incompatible // 22.06 master branch
github.com/docker/docker => github.com/docker/docker v20.10.3-0.20221013203545-33ab36d6b304+incompatible // 22.06 branch
github.com/moby/buildkit => github.com/moby/buildkit v0.10.1-0.20220816171719-55ba9d14360a // same as buildx
github.com/opencontainers/runc => github.com/opencontainers/runc v1.1.2 // Can be removed on next bump of containerd to > 1.6.4
// For k8s dependencies, we use a replace directive, to prevent them being
// upgraded to the version specified in containerd, which is not relevant to the
// version needed.
// See https://github.com/docker/buildx/pull/948 for details.
// https://github.com/docker/buildx/blob/v0.8.1/go.mod#L62-L64
k8s.io/api => k8s.io/api v0.22.4
k8s.io/apimachinery => k8s.io/apimachinery v0.22.4
k8s.io/client-go => k8s.io/client-go v0.22.4
)
-
fix: do not prepend garbage in the container.Exec response (#624) @mdelapenya
The signature of the
Exec
function on a container created by the library has been changed in what we thought it was a non-breaking change manner, using variadic arguments. But we confirmed that it could be a breaking change in the rare case where the Exec function is assigned to a variable.
// The original Exec function works here because its type is func(context.Context, []string),
// but the new Exec function’s type is func(context.Context, []string, ...ProcessOption),
// so the assignment fails at compile time. For that reason we are moving it to this section.
var execFn func(ctx context.Context, cmd []string) = myContainer.Exec
🚀 Features
-
feat: implement new MultiStrategy design (#580) @hhsnopek
This PR enhances how the
wait.ForAll
strategy behaves: it will control the startup timeout and the deadline for all inner wait strategies, using two methods:WithStartupTimeoutDefault
, which sets the default timeout for all inner wait strategies; andWithDeadline
, which sets a time.Duration which limits all wait strategies. As a consequence, the already existing functionWithStartupTimeout
has been deprecated from the multi-strategy struct. -
feat: Auth config for build images (#602) @paulozenida
-
feat: log docker info from compose (#591) @mdelapenya
🐛 Bug Fixes
- fix: support parallel execution of reusable containers (#593) @mdelapenya
📖 Documentation
- README: update
nginxC.Terminate
(#627) @ofey404 - update gotest.md - fix errors in the example (#623) @pantafive
- docs: fix syntax (#615) @mdelapenya
- docs: networking basics (#612) @mdelapenya
- docs: wording in project name (#610) @mdelapenya
- add example of using Pulsar with testcontainers-go (#597) @clive-jevons
- docs: add languages to docs site (#599) @mdelapenya
- docs: Rename the MkDocs site name to match other Testcontainers languages (#598) @HofmeisterAn
- chore: sync governance files (#589) @mdelapenya
- chore: sync governance files (#586) @mdelapenya
🧹 Housekeeping
- chore: sync governance files (#622) @testcontainersbot
- chore: use a fixed version of MySQL (#617) @mdelapenya
- feat: add golangci-lint (#569) @hhsnopek
- chore: sync governance files (#608) @mdelapenya
- chore: sync governance files (#586) @mdelapenya
- Remove codecov and test coverage file (#584) @misantron
📦 Dependency updates
- chore: retire podman pipeline (#625) @mdelapenya
- chore(deps): bump github.com/docker/compose/v2 from 2.12.0 to 2.12.2 (#588) @dependabot
- feat: bump version of test-summary (#596) @Bablzz
v0.15.0
What's Changed
🚀 Features
- feat: add sessionID HTTP Header to the Docker client setup (#570) @mdelapenya
- chore: proper messaging on disabling ryuk (#566) @mdelapenya
- Support returning all IP addresses of a container (#553) @gauravgahlot
- Support for cap-add/cap-drop (#555) @dhuckins
- Log docker server info (#548) @gauravgahlot
⚠️ Breaking Changes
- feat: add host param to url function for wait.ForSQL (#524) @frozenbonito
Before this change, when waiting for a SQL to be executed in a container it always checked against localhost
, but it could be the case that the database instance runs in a different container. For that reason, the library now supports passing the host where the database is running so that the wait.ForSQL
function needs the host as part of the input parameters.
- func ForSQL(port nat.Port, driver string, url func(nat.Port) string) *waitForSql {
+ func ForSQL(port nat.Port, driver string, url func(host string, port nat.Port) string) *waitForSql {
🐛 Bug Fixes
- fix: check if the container request is for the reaper (#574) @mdelapenya
- fix: pass docker context key when reusing a container (#550) @mdelapenya
- fix: use regex to find container by name (#558) @hwwwi
- fix: expose default exposed ports if the NetworkMode is not container (#560) @clive-jevons
- fix(compose): wait.ForExit() strategy should work for finished containers (#514) @Malinskiy
📖 Documentation
- fix: edit link in documentation (#575) @DanielHabenicht
- chore: proper messaging on disabling ryuk (#566) @mdelapenya
- docs: add general Docker requirements (#565) @mdelapenya
- Add system requirements parent docs page for podman and colima (#562) @gauravgahlot
- docs: add docs regarding Colima usage (#547) @hhsnopek
- chore: add CONTRIBUTING file (#539) @mdelapenya
- docs: add a basic layout for wait strategies in docs (#536) @mdelapenya
- docs: improve consistency and fix typos (#534) @sicoyle
🧹 Housekeeping
- chore: prepare for 0.15.0 release (#581) @mdelapenya
- fix: better error message in tests (#577) @mdelapenya
- chore: check error message in parts when testing the CreateContainerWithDirs method (#576) @mdelapenya
- chore: use container.State() function in tests (#543) @mdelapenya
- chore: add emoji to breaking changes in release drafter (#542) @mdelapenya
- issue #537 Rename the wait/multi.go file to wait/all.go (#541) @skofli
- chore: do not skip test (#528) @mdelapenya
- chore: include test flakiness in the release drafter (#535) @mdelapenya
- chore: retire old versions of Go (#530) @mdelapenya
- chore: improve issue templates (#523) @mdelapenya
📦 Dependency updates
- chore(deps): bump gotest.tools/v3 from 3.3.0 to 3.4.0 (#563) @dependabot
- Update testcontainers/ryuk version to 0.3.4 (#564) @eddumelendez
- chore: use hashed versions of test-summary action (#556) @mdelapenya
- chore: retire old versions of Go (#530) @mdelapenya
- chore: pin codecov's GH action to v3.1.0 (#526) @mdelapenya
v0.14.0
What's Changed
🚀 Features
- feat: copy directory to container (#517) @mdelapenya
- feat: Use exposed ports specified in image if it is not specified in ContainerRequest (#468) @fiftin
- Issue 439: use an existing container (#464) @VladimirStepanov
- Issue 225 copy files before container started (#460) @VladimirStepanov
- refactor: read RYUK_CONTAINER_PRIVILEGED once (#475) @zregvart
- feature: custom ForSQL query (#451) @funvit
- Issue 332 generic parallel containers (#456) @VladimirStepanov
- Improve Podman compatibility (#414) @baez90
- Add SHM size to the container request (#461) @EndPositive
- feat: support binds in addition to mounts (#452) @zregvart
- feat: add IPAM configs to
NetworkRequest
(#394) @aivinog1 - use var TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE (#407) @mniak
- Docker compose: Add the output of the command to the returning struct (#420) @oriser
- Add extra hosts to the container request (#436) @EndPositive
⚠️ Breaking Changes
- feat: ability to configure running privileged Ryuk (#449) @zregvart
- Return a Reader from the Exec function (#435) @johanoskarsson
🐛 Bug Fixes
- Return container IP when attached to a single named network (#491) @leszko
- fix: return bad error after parallel running (#483) @VladimirStepanov
- fix: strip stream headers from logs (#454) @funvit
- Fix compose v2 wait strategy (#426) @oriser
📖 Documentation
- docs: add contributing guides (#522) @mdelapenya
- docs: add docs regarding Podman usage (#503) @baez90
- docs: fix format for create-container feature (#481) @mdelapenya
- Remove unused import in redis example (#471) @doodot
- docs: add telegraf to users of testcontainers-go (#447) @powersj
- chore: update branding (#429) @mdelapenya
🧹 Housekeeping
- Add CODEOWNERS (#507) @eddumelendez
- Remove bug_report.md and add slack/discusions to config.yml (#506) @eddumelendez
- chore: add issue templates (#501) @mdelapenya
- chore: retire non-supported Go versions (#493) @mdelapenya
- chore: display test summary on GH actions (#473) @mdelapenya
- refactor: more nuanced env vs properties config (#479) @zregvart
- chore(ci): update podman pipeline (#478) @mdelapenya
- add missing test for checking status code matcher (#469) @VladimirStepanov
- check that environment is clean (#458) @VladimirStepanov
- fix: temp fix of flaky test (#455) @funvit
- Negotiate client version for docker compose (#432) @rahul-muttineni-okcupid
- chore: update configs for mkdocs (#434) @mdelapenya
📦 Dependency updates
- chore(deps): bump github.com/docker/go-units from 0.4.0 to 0.5.0 (#515) @dependabot
- chore(deps): bump github.com/lib/pq from 1.10.6 to 1.10.7 in /e2e (#518) @dependabot
- Update go-redis to v8.11.5 (#424) @johanoskarsson
- chore(deps): bump gotest.tools/gotestsum from 1.7.0 to 1.8.2 (#499) @dependabot
- chore(deps): bump github.com/containerd/containerd from 1.6.7 to 1.6.8 (#495) @dependabot
- chore(deps): bump gotest.tools/gotestsum from 1.8.1 to 1.8.2 in /e2e (#498) @dependabot
- chore(deps): bump github.com/containerd/containerd from 1.6.6 to 1.6.7 (#494) @dependabot
- chore(deps): bump github.com/containerd/containerd from 1.5.9 to 1.6.6 (#444) @dependabot
- chore: retire non-supported Go versions (#493) @mdelapenya
- chore(deps): bump github.com/stretchr/testify from 1.7.2 to 1.8.0 (#487) @dependabot
- chore(deps): bump gotest.tools/v3 from 3.2.0 to 3.3.0 (#486) @dependabot
- chore(deps): bump github.com/cenkalti/backoff/v4 from 4.1.2 to 4.1.3 (#480) @dependabot
- feat(deps): update dependencies to resolve dependabot security alerts (#484) @purpleclay
- feat: update 3d party packages (#467) @VladimirStepanov
- chore(deps): bump gotest.tools/gotestsum from 1.7.0 to 1.8.1 in /e2e (#477) @dependabot
- chore: tell dependabot about the new module (#474) @mdelapenya
- chore(deps): bump github.com/magiconair/properties from 1.8.5 to 1.8.6 (#448) @dependabot
- chore(deps): bump gotest.tools/v3 from 3.0.3 to 3.2.0 (#431) @dependabot
- chore(deps): bump containerd version to v1.5.13 (#446) @vinijabes
v0.13.0
What's Changed
- Send optional platform spec when creating container (#395) @hairyhenderson
- Fix some lint errors (#400) @hairyhenderson
🚀 Features
- expose CopyToContainer so file can be created only in memory (#417) @oktalz
- add ability to stop container (#416) @oktalz
- Remove custom built docker image on container termination (#405) @gaborszakacs
- Remove intermediate containers when building from Dockerfile (#403) @gaborszakacs
- Expose HostConfig Resources via ContainerRequest (#402) @nhatthm
- Logger per container instance (#393) @baez90
- added interface for logger (#385) @dhuckins
- Replace ContainerRequest.BindMounts and ContainerRequest.VolumeMounts with ContainerRequest.Mounts as dedicated type (#386) @baez90
- feat: additionally remove volumes by default on compose down (#381) @peter-evans
- Add wait.ExecStrategy to wait on cmd exec in a container (#368) @alexey-medvedchikov
⚠️ Breaking Changes
- Replace ContainerRequest.BindMounts and ContainerRequest.VolumeMounts with ContainerRequest.Mounts as dedicated type (#386) @baez90
🐛 Bug Fixes
- Add support for Docker Compose V2 (#377) @artamonovkirill
- #391: remember service map from all docker compose files (#392) @ankan-pfc
- Bugfix: log-consumer go-routine should recover from closed-connection (#369) @Chrisss93
📖 Documentation
- add import statements to quick start (#408) @kevinawoo
- docs/gotests: fixed broken link for garbage collector (#409) @kevinawoo
- docs: fix ryuk link (#388) @dlsrb6342
🧹 Housekeeping
- chore(ci): run tests for more recent Go versions (#401) @mdelapenya
- chore: preparation to rename to main (#422) @mdelapenya
- fix: use 1.18 format to install dependencies (#421) @mdelapenya
- Upgrade dependencies to latest versions (#387) @baez90
📦 Dependency updates
- fix: use 1.18 format to install dependencies (#421) @mdelapenya
v0.12.0
What's Changed
- Add container examples to documentation, clean up README (#353) @jaredpetersen
- Add canned kafka to module doc (#357) @franklinlindemberg
- Added CopyFileFromContainer to DockerContainer (#347) @codepitbull
- Fix default network is not initialize when get gateway ip (#349) @mrproliu
- fix: cache http wait request body (#339) @ajcasagrande
- Update README.md (#335) @jbl428
- typo: 10 minutes -> 10 seconds (#346) @robsonpeixoto
- Change t.Error() to t.Fatal() in example (#337) @candlerb
- fix: store raw information of a container (#334) @mdelapenya
- container information stauff (#271) @01101101M
⚠️ Breaking Changes
🚀 Features
- feat: support reading DOCKER_HOST from testcontainers props file (#373) @mdelapenya
- Expose configuration of logger (#362) @rcrowe
- Allow uid:gid to be specified during container creation (#363) @bamsammich
- chore: add WaitForService method to compose (#344) @mdelapenya
🐛 Bug Fixes
📖 Documentation
- docs: add users of testcontainers-go (#345) @mdelapenya
🧹 Housekeeping
- fix: don't panic at an unexpected log type (#360) @Vladimir-Rom
📦 Dependency updates
- chore(deps): bump github.com/docker/docker from 20.10.9+incompatible to 20.10.11+incompatible (#383) @dependabot
- Updated default ryuk image to testcontainers/ryuk:0.3.3. (#376) @silh
- Bump runc (#378) @benmoss
- chore(deps): bump mkdocs from 1.0.4 to 1.2.3 (#367) @dependabot
- chore(deps): bump github.com/docker/docker from 20.10.8+incompatible to 20.10.9+incompatible (#364) @dependabot
- chore(deps): bump github.com/google/uuid from 1.2.0 to 1.3.0 (#333) @dependabot
- chore(deps): bump github.com/docker/docker from 20.10.7+incompatible to 20.10.8+incompatible (#340) @dependabot
v0.11.1
What's Changed
🐛 Bug Fixes
- fix(compose): filter containers by service name only (#330) @mdelapenya
📖 Documentation
v0.11.0
What's Changed
- Retry follow logs request on closed connection (#323) @rmfitzpatrick
- Add instrumentations for containers created with Dockerfile (#311) @xicoalmeida
- close reaper go routines on
DockerContainer.Terminate
&DockerNetwork.Remove
(#320) @Eun - Wait strategies must poll ports (#295) @programminh
🚀 Features
- feat: add wait-for support for compose (#308) @mdelapenya
🐛 Bug Fixes
- Fix/wait log exact number occurences (#298) @FlorianLehmann
📦 Dependency updates
- Upgrade to GitHub-native Dependabot (#316) @dependabot-preview
- build(deps): bump github.com/docker/docker from 20.10.5+incompatible to 20.10.6+incompatible (#309) @dependabot-preview
- build(deps): bump github.com/Microsoft/hcsshim from 0.8.15 to 0.8.16 (#307) @dependabot-preview
- build(deps): bump github.com/go-sql-driver/mysql from 1.5.0 to 1.6.0 (#305) @dependabot-preview
- Bump jinja2 from 2.11.2 to 2.11.3 (#296) @dependabot
v0.10.0
What's Changed
- Ensuring compilation for windows, darwin, and linux (#270) @ClaytonNorthey92
- Remove Travis (#287) @gianarb
- Fix typos (#281) @sashayakovtseva
- Update Docker dependency to Docker 20.10.3. (#283) @michielboekhoff
- feat: add logging on image pull error (#272) @tobiaszheller
- chore: add GH action badge (#265) @mdelapenya
- Remove gin dependency (#262) @colega
- feature: move to github action #242 (#257) @Bablzz
- Fix: comment log strategy (#256) @Bablzz
- fix: fixed typos (#254) @Bablzz
- Resolving issue #248 (#249) @ikolomiyets
📖 Documentation
- Document our approach to modules (#268) @gianarb
- docs: fix variable type (#266) @mdelapenya
🧹 Housekeeping
- Add a GH action stage to send coverage reports to Codecov (#264) @mdelapenya
- chore: support removing orphan containers when destroying the compose (#267) @mdelapenya
- Fix shellcheck issues (#251) @Bablzz
📦 Dependency updates
- Bump github.com/Microsoft/hcsshim from 0.8.14 to 0.8.15 (#292) @dependabot-preview
- Bump github.com/docker/docker from 20.10.4+incompatible to 20.10.5+incompatible (#291) @dependabot-preview
- Bump github.com/docker/docker from 20.10.3+incompatible to 20.10.4+incompatible (#290) @dependabot-preview
- Bump github.com/Microsoft/hcsshim from 0.8.7 to 0.8.14 (#288) @dependabot-preview
- Bump github.com/google/uuid from 1.1.4 to 1.2.0 (#289) @dependabot-preview
- Bump github.com/google/uuid from 1.1.4 to 1.2.0 (#280) @dependabot-preview
- Bump github.com/stretchr/testify from 1.6.1 to 1.7.0 (#277) @dependabot-preview
- Bump github.com/google/uuid from 1.1.2 to 1.1.4 (#276) @dependabot-preview
- Bump gopkg.in/yaml.v2 from 2.3.0 to 2.4.0 (#269) @dependabot-preview
v0.9.0
What's Changed
- Poll interval (#200) @mniak
- refector wait.HTTPStrategy (#221) @islishude
🐛 Bug Fixes
- Issue #243: Introducing the default network in case "bridge" is disabled (#244) @ikolomiyets
- PR #247: bump docker/docker to v19.03.13 @gianarb
v0.8.0
What's Changed
- Use NetworkInspect to get the gateway's IP and fallback to getDefaultGatewayIP when fails (#237) @namco1992
- Added support for copy file to container (#226) @franklinlindemberg
- chore: run travis in multiple versions of Go (#233) @mdelapenya
- Allow hostname to be configured (#227) @fbiville
🐛 Bug Fixes
- Close db connection when sql.wait is done (#220) @islishude
📖 Documentation
🧹 Housekeeping
- chore: simplify complex docker-compose file (#217) @mdelapenya
📦 Dependency updates
- Bump github.com/google/uuid from 1.1.1 to 1.1.2 (#236) @dependabot-preview
- update docker/docker package version (#229) @snowhork
- Bump github.com/go-redis/redis from 6.15.8+incompatible to 6.15.9+incompatible (#230) @dependabot-preview
- github.com/docker/distribution should be an indirect dependency (#222) @islishude