我正在尝试通过 Docker-Compose 在 Semaphore-ci 上设置一个带有 Postgres 数据库的 Django 项目。数据库容器似乎没有运行。我收到一条错误消息“django.db.utils.OperationalError:无法将主机名“db”转换为地址:名称或服务未知”。我在下面包含了我的 docker-compose.yml、semaphore.yml 和 settings.py。
码头工人-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
信号量.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(数据库部分)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
任何有关如何解决此问题的建议将不胜感激。