BitBucket 파이프 라인에서 FastAPI 테스트를 실행하도록 postgresql을 구성하는 방법

카스피

작업중인 FastAPI 상용구에 대한 파이프 라인을 설정하려고합니다. 지금까지 내가 한 것은 실패했고 그 이유를 알 수 없습니다. 내가 가진 것은 다음과 같습니다.

bitbucket-pipelines.yml

image: python:3.7.4-slim-buster

options:
    max-time: 5

definitions: 
    steps:
        - step: &test
            name: test
            script:
                - >-
                    docker build -f {{cookiecutter.app_name}}/{{cookiecutter.service_name}}/tests.dockerfile
                    -t boilerplate ./{{cookiecutter.app_name}}/{{cookiecutter.service_name}}
                - >-
                    docker run --env POSTGRES_HOST=host.docker.internal 
                    --add-host host.docker.internal:$BITBUCKET_DOCKER_HOST_INTERNAL boilerplate
                    /bin/bash -c /run-tests.sh
            services:
                - docker
                - postgres
            caches:
                - docker
    services: 
        postgres: 
            image: postgres
            environment:
                POSTGRES_HOST_AUTH_METHOD: trust

pipelines:
    pull-requests:
        '**':
            - step: *test

다음을 사용하여 데이터베이스에 연결하고 있습니다.

DATABASE_URL = os.getenv('DATABASE_URL', 'postgresql://postgres@localhost/postgres')

다음은 파이프 라인을 실행할 때 발생한 오류입니다.

E   sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused
E       Is the server running on host "localhost" (127.0.0.1) and acceptingE    TCP/IP connections on port 5432?
E   
E   (Background on this error at: http://sqlalche.me/e/13/e3q8)

postgresql://postgres@localhost/postgresBitBucket이 기본 사용자를 위해 postgresql을 설정하는 방법이기 때문에 추가했습니다 . 내가 도대체 ​​뭘 잘못하고있는 겁니까?

카스피

이 기사 에서 찾은 내용을 기반으로  한 스 니펫은 다음과 같습니다.

docker에서 실행중인 서비스에서 빌드 컨테이너에서 실행중인 서비스로 통신해야하는 경우 서비스를 시작할 때 --add-host host.docker.internal : $ BITBUCKET_DOCKER_HOST_INTERNAL을 사용하여 다음 호스트 항목을 제공하면 서비스에 액세스 할 수 있습니다. host.docker.internal : port 사용

host.docker.internal내 호스트 로 지정해야 했습니다.

DATABASE_URL = os.getenv('DATABASE_URL', 'postgresql://[email protected]/postgres')

사용하는 대신 localhost

또 다른 접근 방식은 다음을 수행하는 것입니다.

DATABASE_URL = os.getenv('DATABASE_URL')

그런 다음을 수행하는 대신 다음을 docker run --env POSTGRES_HOS=host.docker.internal수행하십시오.

definitions: 
    steps:
        - step: &test
            name: test
            script:
                ...
                ...
                - >-
                    docker run --env DATABASE_URL=postgresql://[email protected]/postgres 
                    --add-host host.docker.internal:$BITBUCKET_DOCKER_HOST_INTERNAL boilerplate
                    /bin/bash -c /run-tests.sh

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

동일한 xml 구성을 사용하여 로컬 도커 이미지 및 bitbucket 파이프 라인에서 데이터베이스 phpunit 테스트 실행

Bitbucket 파이프 라인에서 Cypress를 실행하면 Chrome을 찾지 못함

Azure 파이프 라인에서 Karate API 테스트를 실행하는 방법

이미지 bitbucket 파이프 라인에 대한 환경을 구성하는 방법

기존 Hadoop 클러스터에 대해 실행되도록 Cloud Data Fusion 파이프 라인을 구성하는 방법

Katalon 테스트 실행 중에 프롬프트 없이 파일을 다운로드하도록 Firefox를 설정하는 방법은 무엇입니까?

spock 및 junit5 테스트를 실행하도록 Maven 플러그인을 구성하는 방법

Starlette / FastAPI에서 클라이언트 인증서 확인 (mTLS)을 수행하는 방법

Azure 릴리스 파이프 라인에서 Jmeter 테스트를 구성하는 방법

Azure DevOps 파이프라인에서 ASP.NET Core 종속성을 사용하여 XUnit 테스트를 실행하는 방법은 무엇입니까?

pom 파일에 지정된 모든 Maven 플러그인을 실행하도록 intellij를 구성하는 방법

Bitbucket에서 Java 11 기반 스프링 부트 파이프 라인을 설정하는 방법은 무엇입니까?

Karma가 작업 공간 내에서 특정 각도 6 구성 요소 라이브러리의 테스트를 실행하도록하는 방법

NUnit이 실패시 클래스에서 테스트 실행을 중지하도록하는 방법

Bitbucket 파이프라인에서 도커 데몬에 연결하는 방법

젠킨스 파이프 라인 작업 내에서 도커 명령을 실행하는 방법

테스트를 실행할 때 테스트 리소스에서 application.properties 파일을 사용하도록 Spring Boot에 지시하는 방법

Gitlab CI : Docker 및 Shell Runner를 사용하여 파이프 라인에서 테스트를 실행하는 방법

Bitbucket 파이프 라인과 함께 Maven을 사용하여 단일 JUnit 테스트 스위트 실행

라 라벨에서 인터페이스 구현을 테스트하는 방법

Bitbucket 파이프 라인에서 git 서브 모듈을 사용하는 방법은 무엇입니까?

Bitbucket 파이프 라인에서 DockerHub 이미지를 캐시하는 방법이 있습니까?

클래식 파이프 라인에서 사전 작업을 실행하도록 Azure DevOps Pipeline 데코레이터를 구성하는 방법은 무엇입니까?

Jenkins 파이프 라인의 Docker 컨테이너에서 Python 스크립트를 실행하는 방법

Bitbucket 파이프 라인을위한 postgresql 및 Java를 사용하는 Docker

Azure TFS를 사용하여 CI / CD 파이프 라인에서 앱 설정을 구성하는 방법

rebar로 테스트를 실행하는 common_test에 대한 구성 파일을 지정하는 방법

하나의 파이프 라인 내에서 withMaven을 구성하는 방법

FastAPI 애플리케이션을위한 SQLAlchemy 테스트 픽스처를 작성하는 방법