Postgresql Gitlab CI中的postgres docker容器出现问题
有几天我的项目遇到了这个问题,它在本地主机上工作,但在gitlabCI上没有。 我想在gitlabCI中的postgres docker图像上建立一个测试数据库,但它不起作用,我尝试了很多东西,在问这个问题之前浪费了很多时间:“(。 在my docker-compose.yml文件下面:Postgresql Gitlab CI中的postgres docker容器出现问题,postgresql,docker,docker-compose,gitlab-ci,dind,Postgresql,Docker,Docker Compose,Gitlab Ci,Dind,有几天我的项目遇到了这个问题,它在本地主机上工作,但在gitlabCI上没有。 我想在gitlabCI中的postgres docker图像上建立一个测试数据库,但它不起作用,我尝试了很多东西,在问这个问题之前浪费了很多时间:“(。 在my docker-compose.yml文件下面: version: "3" services: nginx: image: nginx:latest container_name: nginx
version: "3"
services:
nginx:
image: nginx:latest
container_name: nginx
depends_on:
- postgres
- monapp
volumes:
- ./nginx-conf:/etc/nginx/conf.d
- ./util/certificates/certs:/etc/nginx/certs/localhost.crt
- ./util/certificates/private:/etc/nginx/certs/localhost.key
ports:
- 81:80
- 444:443
networks:
- monreseau
monapp:
image: monimage
container_name: monapp
depends_on:
- postgres
ports:
- "3000:3000"
networks:
- monreseau
command: "npm run local"
postgres:
image: postgres:9.6
container_name: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_HOST: postgres
POSTGRES_PASSWORD: postgres
volumes:
- ./pgDatas:/var/lib/postgresql/data/
- ./db_dumps:/home/dumps/
ports:
- "5432:5432"
networks:
- monreseau
networks:
monreseau:
在我的gitlab-ci.yml文件下面:
stages:
# - build
- test
image:
name: docker/compose:latest
services:
- docker:dind
before_script:
- docker version
- docker-compose version
variables:
DOCKER_HOST: tcp://docker:2375/
# build:
# stage: build
# script:
# - docker build -t monimage .
# - docker-compose up -d
test:
stage: test
script :
- docker build -t monimage .
- docker-compose up -d
- docker ps
- docker exec -i postgres psql -U postgres -h postgres -f /home/dumps/test/dump_test_001 -c \\q
- exit
- docker exec -i monapp ./node_modules/.bin/env-cmd -f ./env/.env.builded-test npx jasmine spec/auth_queries.spec.js
- exit
这是gitlabCI服务器上docker ps日志的内容:
我原以为将postgres放在主机上是可行的,但在gitlab ci终端中我一直没有:
psql: could not connect to server: Connection refused
Is the server running on host "postgres" (172.19.0.2) and accepting
TCP/IP connections on port 5432?
我还尝试将docker置于主机上,但出现错误:
psql: could not translate host name "docker" to address: Name or service not known
精度不高:当我进行生成测试时,它在我计算机的本地主机上工作
下面是我的makefile:
builded-test:
docker build -t monimage .
docker-compose up -d
docker ps
docker exec -i postgres psql -U postgres -h postgres -f /home/dumps/test/dump_test_001 -c \\q
exit
docker exec -i monapp ./node_modules/.bin/env-cmd -f ./env/.env.builded-test npx jasmine spec/auth_queries.spec.js
exit
docker-compose down
我想让我的docker中的work postgres图像在gitlab CI上合成以执行我的测试请帮助我:)提前谢谢
更新 现在它可以在gitlab runner中运行,但在我推送时仍然不能在gitlab上运行,我会像下面这样更新文件 我补充说:
variables:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: ""
POSTGRES_HOST_AUTH_METHOD: trust
改变
test:
stage: test
script :
- docker build -t monimage .
- docker-compose up -d
- docker ps
- docker exec postgres psql -U postgres **-h postgres** -f /home/dumps/test/dump_test_001
- docker exec monapp ./node_modules/.bin/env-cmd -f ./env/.env.builded-test npx jasmine spec/auth_queries.spec.js
在.gitlab-ci.yml中
但当我把它推到gitlab时,它仍然不起作用,它给了我:
sql: could not connect to server: Connection refused
Is the server running on host "postgres" (172.19.0.2) and accepting
TCP/IP connections on port 5432?
有什么想法吗?:) 也许您需要等待PostgreSQL服务启动并运行 在尝试
psql
功能之前,您可以添加10秒的延迟吗?比如:
- sleep 10
如果可行,那么您可以使用更具体的解决方案来等待PostgreSQL初始化,比如注释不用于扩展讨论;这段对话已经结束。