I am attempting to set up a Django project with a Postgres database on Semaphore-ci via Docker-Compose. The database container does not appear to be running. I am receiving an error message 'django.db.utils.OperationalError: could not translate host name "db" to address: Name or service not known'. I have included my docker-compose.yml, semaphore.yml and settings.py below.
docker-compose.yml
version: "3.9"
services:
db:
image: postgres
volumes:
- ./data/db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
web:
build: .
command: python3 ./zenmon/manage.py runserver 0.0.0.0:8000
volumes:
- .:/opt/app
ports:
- "8000:8000"
depends_on:
- db
semaphore.yml
# .semaphore/semaphore.yml
version: v1.0
name: Initial Pipeline
agent:
machine:
# Use a machine type with more RAM and CPU power for faster container
# builds:
type: e1-standard-2
os_image: ubuntu1804
blocks:
- name: Build
task:
# Mount a secret which defines DOCKER_USERNAME and DOCKER_PASSWORD
# environment variables.
# For info on creating secrets, see:
# https://docs.semaphoreci.com/essentials/using-secrets/
secrets:
- name: dockerhub
jobs:
- name: Docker build
commands:
# Authenticate with Docker Hub
- 'echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin'
- sem-version python 3.8
- checkout
- mkdir .pip_cache
- cache restore
- pip install --cache-dir .pip_cache -r requirements.txt
- cache store
- docker-compose build
- 'docker pull $DOCKER_USERNAME/zenmon:latest || true'
- 'docker-compose build --cache-from=$DOCKER_USERNAME/zenmon:latest -t $DOCKER_USERNAME/zenmon:latest .'
- 'docker push $DOCKER_USERNAME/zenmon:latest'
- docker images
- name: Run & Test Docker image
task:
# Mount a secret which defines DOCKER_USERNAME and DOCKER_PASSWORD
# environment variables.
# For info on creating secrets, see:
# https://docs.semaphoreci.com/essentials/using-secrets/
secrets:
- name: dockerhub
prologue:
commands:
# Authenticate with Docker Hub
- echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin
- sem-version python 3.8
- checkout
- mkdir .pip_cache
- cache restore
- pip install --cache-dir .pip_cache -r requirements.txt
- cache store
- docker pull "$DOCKER_USERNAME"/zenmon
- docker-compose up -d --build
jobs:
- name: Check Running Images
commands:
- docker ps
- name: Run Unit test
commands:
- cd zenmon
- python3 manage.py makemigrations
- python3 manage.py migrate
- python3 manage.py test dashboard.tests.test_models
- python3 manage.py test dashboard.tests.test_views
- python3 manage.py test dashboard.tests.test_forms
- name: Checklist
commands:
- cd zenmon
- python3 manage.py check --deploy
- name: Style check
commands:
- pip install flake8
- flake8 zenmon/ --max-line-length=127
settings.py (database section)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
I have already tried these solutions and these solutions.
Any suggestions of how to resolve this issue would be appreciated.