我想使用 bitbucket 管道为 Django Web 实现一些 CI/CD。目标是:测试 Docker 构建是否正确,然后运行 Django 测试。
但我得到这个错误:
django.db.utils.OperationalError: (2003, 'Can\'t connect to MySQL server on \'127.0.0.1\' (111 "Connection refused")')
这是bitbucket-pipelines.yml:
options:
docker: true
definitions:
services:
mysql:
image: mysql:5.7
variables:
MYSQL_DATABASE: 'foo'
MYSQL_USER: 'default'
MYSQL_PASSWORD: 'default'
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
steps:
- step: &test-docker
name: "docker builds"
services:
- docker
- mysql
caches:
- docker
script:
- export IMAGE_NAME=foo:$BITBUCKET_COMMIT
- export CONTAINER_NAME=test-foo
- docker build -t $IMAGE_NAME .
- docker run -p 8080:8080 --name $CONTAINER_NAME --rm -d $IMAGE_NAME
- docker exec $CONTAINER_NAME python /app/manage.py test tests --noinput
- docker stop $CONTAINER_NAME
pipelines:
default:
- step: *test-docker
我已经尝试了一些解决方案和解决方法,例如。连接来自服务和码头的端口;使用卷;并在 docker 外测试 Django。这个有更多问题,因为它需要 2 个 DB(原始和测试)和一个具有完全访问权限的用户,并且使用入口点不起作用。