작업중인 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/postgres
BitBucket이 기본 사용자를 위해 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] 삭제
몇 마디 만하겠습니다