Postgresql Gitlab CI中的postgres docker容器出现问题

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

有几天我的项目遇到了这个问题,它在本地主机上工作,但在gitlabCI上没有。 我想在gitlabCI中的postgres docker图像上建立一个测试数据库,但它不起作用,我尝试了很多东西,在问这个问题之前浪费了很多时间:“(。 在my docker-compose.yml文件下面:

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初始化,比如

注释不用于扩展讨论;这段对话已经结束。