testcontainers / testcontainers/testcontainers-python
Question: Accessing docker compose container services when using DinD
Dieses Issue hat noch niemand ΓΌbernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 2.3k
- Forks
- 386
- Γ Merge
- 4 Std. 40 Min.
- Gemergte PRs (30 T.)
- 1
Beschreibung
What are you trying to do?
We're currently trying to use DockerCompose class objects to run integration tests inside our CI env (gitlab using DinD service).
As the docker composed set of services is being spin inside a DinD service container, they're not directly accessible from the job container,
Where are you trying to do it?
from testcontainers.compose import DockerCompose
compose = DockerCompose(
"tests/integration/compose", compose_file_name="docker-compose.yml", pull=True
)
compose.start()
print("PublishedPort: "+compose.get_container(service_name="schema-registry").get_publisher().URL)
This prints out an inaccessible URL (from the CI job container standpoint)
The same code works fine on local setup.
Runtime environment
(GitLab Job CI env settings)
uname -a
echo "------"
docker info
echo "------"
poetry run python --version
echo "------"
poetry show --tree
Linux 694dc901af1e 6.5.0-1022-aws #22~22.04.1-Ubuntu SMP Fri Jun 14 16:31:00 UTC 2024 x86_64 x86_64 x86_64 inux 694dc901af1e 6.5.0-1022-aws #22~22.04.1-Ubuntu SMP Fri Jun 14 16:31:00 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
------
Client:
Version: 24.0.5
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.0.0+unknown
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.29.1
Path: /usr/local/lib/docker/cli-plugins/docker-compose
Server:
ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
errors pretty printing info
------
Path /dp-gitlab-migration-test/mms_receiver/external_modules/application/aws_logging for aws_logging does not exist
Skipping virtualenv creation, as specified in config file.
Python 3.11.6
------
Path /dp-gitlab-migration-test/mms_receiver/external_modules/application/aws_logging for aws_logging does not exist
Skipping virtualenv creation, as specified in config file.
aws-lambda-powertools 2.35.1 Powertools for AWS Lambda (Python) is a developer toolkit to implement Serverless best practices and increase developer velocity.
βββ typing-extensions >=4.6.2,<5.0.0
aws-logging 1.0.0 A package that contain a reusable module for structure logging
βββ boto3 ^1.17.98
β βββ botocore >=1.34.35,<1.35.0
β β βββ jmespath >=0.7.1,<2.0.0
β β βββ python-dateutil >=2.1,<3.0.0
β β β βββ six >=1.5
β β βββ urllib3 >=1.25.4,<2.1
β βββ jmespath >=0.7.1,<2.0.0 (circular dependency aborted here)
β βββ s3transfer >=0.10.0,<0.11.0
β βββ botocore >=1.33.2,<2.0a.0 (circular dependency aborted here)
βββ structlog ^22.3.0
black 23.3.0 The uncompromising code formatter.
βββ click >=8.0.0
β βββ colorama *
βββ mypy-extensions >=0.4.3
βββ packaging >=22.0
βββ pathspec >=0.9.0
βββ platformdirs >=2
boto3 1.34.35 The AWS SDK for Python
βββ botocore >=1.34.35,<1.35.0
β βββ jmespath >=0.7.1,<2.0.0
β βββ python-dateutil >=2.1,<3.0.0
β β βββ six >=1.5
β βββ urllib3 >=1.25.4,<2.1
βββ jmespath >=0.7.1,<2.0.0
βββ s3transfer >=0.10.0,<0.11.0
βββ botocore >=1.33.2,<2.0a.0
βββ jmespath >=0.7.1,<2.0.0
βββ python-dateutil >=2.1,<3.0.0
β βββ six >=1.5
βββ urllib3 >=1.25.4,<2.1
confluent-kafka 2.3.0 Confluent's Python client for Apache Kafka
fastavro 1.9.4 Fast read/write of AVRO files
polyfactory 2.15.0 Mock data generation factories
βββ faker *
β βββ python-dateutil >=2.4
β βββ six >=1.5
βββ typing-extensions >=4.6.0
psycopg 3.1.18 PostgreSQL database adapter for Python
βββ typing-extensions >=4.1
βββ tzdata *
psycopg-binary 3.1.18 PostgreSQL database adapter for Python -- C optimisation distribution
psycopg2-binary 2.9.9 psycopg2 - Python-PostgreSQL Database Adapter
pydantic 2.6.4 Data validation using Python type hints
βββ annotated-types >=0.4.0
βββ email-validator >=2.0.0
β βββ dnspython >=2.0.0
β βββ idna >=2.0.0
βββ pydantic-core 2.16.3
β βββ typing-extensions >=4.6.0,<4.7.0 || >4.7.0
βββ typing-extensions >=4.6.1
pytest 7.2.2 pytest: simple powerful testing with Python
βββ attrs >=19.2.0
βββ colorama *
βββ iniconfig *
βββ packaging *
βββ pluggy >=0.12,<2.0
pytest-cov 4.0.0 Pytest plugin for measuring coverage.
βββ coverage >=5.2.1
βββ pytest >=4.6
βββ attrs >=19.2.0
βββ colorama *
βββ iniconfig *
βββ packaging *
βββ pluggy >=0.12,<2.0
requests 2.31.0 Python HTTP for Humans.
βββ certifi >=2017.4.17
βββ charset-normalizer >=2,<4
βββ idna >=2.5,<4
βββ urllib3 >=1.21.1,<3
sqlalchemy 2.0.28 Database Abstraction Library
βββ greenlet !=0.4.17
βββ typing-extensions >=4.6.0
testcontainers 4.5.1 Python library for throwaway instances of anything that can run in a Docker container
βββ docker *
β βββ pywin32 >=304
β βββ requests >=2.26.0
β β βββ certifi >=2017.4.17
β β βββ charset-normalizer >=2,<4
β β βββ idna >=2.5,<4
β β βββ urllib3 >=1.21.1,<3
β βββ urllib3 >=1.26.0 (circular dependency aborted here)
βββ typing-extensions *
βββ urllib3 *
βββ wrapt *
tox 4.4.8 tox is a generic virtualenv management and test command line tool
βββ cachetools >=5.3
βββ chardet >=5.1
βββ colorama >=0.4.6
βββ filelock >=3.10
βββ packaging >=23
βββ platformdirs >=3.1.1
βββ pluggy >=1
βββ pyproject-api >=1.5.1
β βββ packaging >=23.1
βββ virtualenv >=20.21
βββ distlib >=0.3.7,<1
βββ filelock >=3.12.2,<4
βββ platformdirs >=3.9.1,<5
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es ΓΌbernimmst β das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Γffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem in tests/integration/compose gezeigten DockerCompose-Ablauf, insbesondere compose.start(), get_container() und get_publisher(). Reproduziere das Beispiel in der GitLab-DinD-Umgebung und vergleiche die verΓΆffentlichte URL mit dem lokalen Verhalten. Als abgeschlossen gilt, wenn geklΓ€rt ist, ob die URL vom Job-Container aus erreichbar gemacht werden kann, oder wenn die erforderliche unterstΓΌtzte Konfiguration dokumentiert ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- docker, docker-compose, gitlab, python
- Bereich
- devops, infrastructure, testing-qa
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- GeschΓ€tzter Aufwand
- 3-5 Tage
- AktivitΓ€tsstatus
- Veraltet
- Klarheit
- Muss geklΓ€rt werden
- AnfΓ€ngerfreundlichkeit
- 25/100