gpt4 book ai didi

postgresql - Gitlab CI with Docker images - Flask 微服务测试数据库

转载 作者:行者123 更新时间:2023-11-29 13:09:05 25 4
gpt4 key购买 nike

我正在尝试将内置在 docker 容器中的 Flack 应用程序/服务部署到 Gitlab CI。我可以通过 docker-compose 让一切正常工作,除非我尝试对 postgres 数据库运行测试时出现以下错误:

Is the server running on host "events_db" (172.19.0.2) and accepting TCP/IP connections on port 5432?

大概这是因为容器之间看不到彼此。我尝试了很多不同的方法。但下面是我最新的。我试图让 docker-compose 启动两个容器(就像在本地一样),将 postgres db 作为 git lab 服务运行,从 python 图像而不是 docker 图像运行,使用 docker.prod.yml 其中我删除了卷和变量。

没有任何效果。当您查找“gitlab ci docker flask postgres”时,我检查了谷歌上显示的几乎每个链接,我相信我对实现有很大的误解。

我确实有 gitlab runner 。

.gitlab-ci.yml

image: docker:latest
services:
- docker:dind
- postgres:latest

stages:
- test

variables:
POSTGRES_DB: events_test
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
DATABASE_URL: postgres://postgres@postgres:5432/events_test
FLASK_ENV: development
APP_SETTINGS: app.config.TestingConfig
DOCKER_COMPOSE_VERSION: 1.23.2

before_script:
#- rm /usr/local/bin/docker-compose
- apk add --no-cache py-pip python-dev libffi-dev openssl-dev gcc libc-dev make
- pip install docker-compose

#- mv docker-compose /usr/local/bin
- docker-compose up -d --build

test:
stage: test
#coverage: '/TOTAL.+ ([0-9]{1,3}%)/'

script:
- docker-compose exec -T events python manage.py test

after_script:
- docker-compose down

docker-compose.yml

version: '3.3'

services:
events:
build:
context: ./services/events
dockerfile: Dockerfile

volumes:
- './services/events:/usr/src/app'

ports:
- 5001:5000

environment:
- FLASK_ENV=development
- APP_SETTINGS=app.config.DevelopmentConfig
- DATABASE_URL=postgres://postgres:postgres@events_db:5432/events_dev # new
- DATABASE_TEST_URL=postgres://postgres:postgres@events_db:5432/events_test # new

events_db:
build:
context: ./services/events/app/db
dockerfile: Dockerfile

ports:
- 5435:5432

environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres

最佳答案

你的 Gitlab Runner 的执行器类型是什么?

如果您使用的是 Kubernetes 执行器,请添加此变量:

DOCKER_HOST: tcp://localhost:2375/

对于非 Kubernetes 执行器,我们使用 tcp://docker:2375/

DOCKER_HOST: tcp://docker:2375/

另外,Gitlab Runner 应该处于“特权”模式。

更多信息: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#help-and-feedback

希望对您有所帮助!

关于postgresql - Gitlab CI with Docker images - Flask 微服务测试数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57154276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com