Bitbucket pipelines/Docker:连接被拒绝
Bitbucket pipelines/Docker : Connection refused
我正在尝试将 bitbucket CI 管道配置为 运行 tests.Stripping 详细信息 我有一个 make 文件,如下所示 运行 某种形式集成测试。
test-e2e:
docker-compose -f ${DOCKER_COMPOSE_FILE} up -d ${APP_NAME}
godog
docker-compose -f ${DOCKER_COMPOSE_FILE} down
Docker compose 是一个暴露端口的网络服务器。
管道如下所示:
- step: &integration-testing
name: Run integration tests script: # do this to make go module work with private repo
- apk add libc-dev py-pip python-dev libffi-dev openssl-dev gcc libc-dev make bash
- pip install docker-compose - git config --global url."git@bitbucket.org:".insteadOf "https://bitbucket.org/"
- go get github.com/onsi/ginkgo/ginkgo
- go get github.com/onsi/gomega/...
- go get github.com/DATA-DOG/godog/cmd/godog
- make build-only && make test-e2e
我面临两个不同的问题,我一直无法找到解决方案。
- 当测试为 运行 时,连接一直被拒绝。
以上详细说明,docker compose 会启动一个具有适当 host:port 映射(“127.0.0.1:10077:10077”)的服务器。命令 godog 旨在通过查询服务器来 运行 测试。然而,这总是以连接被拒绝结束。This link 有一个可能的解决方案,所以我正在探索它。
管道几乎总是在容器启动之前发出 运行s 命令。我已尝试通过将调用更改为来解决此问题。
test-e2e:
docker-compose -f ${DOCKER_COMPOSE_FILE} up -d ${APP_NAME} && sleep 10 && docker exec -i oracle-go godog && docker-compose -f ${DOCKER_COMPOSE_FILE} down
然而容器总是在休眠后被启动(几乎是瞬间)。
Example:
Creating oracle-go ...
Sleep 10
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker exec -i oracle-go godog
Creating oracle-go ... done
Error response from daemon: Container 7bab5322203756b972e7f0a3c6e5827413279914a68c705221b8af7daadc1149 is not running
如果有解决办法,请告诉我。
如果我对你的问题的理解正确,你希望在 运行 测试之前等待服务器启动。
您应该使用 wait-for-it.sh
(or an alternative). See the relevant Docker docs 来获取更多信息,而不是手动 sleep
ing。
例如:
test-e2e:
bash wait-for-it.sh <HOST>:<PORT> -- docker-compose -f ${DOCKER_COMPOSE_FILE} up -d ${APP_NAME} && docker exec -i oracle-go godog && docker-compose -f ${DOCKER_COMPOSE_FILE} down
将 <HOST>
和 <PORT>
分别更改为您的服务的主机名和端口。或者,您可以在 Docker Compose command
等中使用 wait-for-it.sh
。
我正在尝试将 bitbucket CI 管道配置为 运行 tests.Stripping 详细信息 我有一个 make 文件,如下所示 运行 某种形式集成测试。
test-e2e:
docker-compose -f ${DOCKER_COMPOSE_FILE} up -d ${APP_NAME}
godog
docker-compose -f ${DOCKER_COMPOSE_FILE} down
Docker compose 是一个暴露端口的网络服务器。
管道如下所示:
- step: &integration-testing
name: Run integration tests script: # do this to make go module work with private repo
- apk add libc-dev py-pip python-dev libffi-dev openssl-dev gcc libc-dev make bash
- pip install docker-compose - git config --global url."git@bitbucket.org:".insteadOf "https://bitbucket.org/"
- go get github.com/onsi/ginkgo/ginkgo
- go get github.com/onsi/gomega/...
- go get github.com/DATA-DOG/godog/cmd/godog
- make build-only && make test-e2e
我面临两个不同的问题,我一直无法找到解决方案。
- 当测试为 运行 时,连接一直被拒绝。
以上详细说明,docker compose 会启动一个具有适当 host:port 映射(“127.0.0.1:10077:10077”)的服务器。命令 godog 旨在通过查询服务器来 运行 测试。然而,这总是以连接被拒绝结束。This link 有一个可能的解决方案,所以我正在探索它。
管道几乎总是在容器启动之前发出 运行s 命令。我已尝试通过将调用更改为来解决此问题。
test-e2e: docker-compose -f ${DOCKER_COMPOSE_FILE} up -d ${APP_NAME} && sleep 10 && docker exec -i oracle-go godog && docker-compose -f ${DOCKER_COMPOSE_FILE} down
然而容器总是在休眠后被启动(几乎是瞬间)。
Example:
Creating oracle-go ...
Sleep 10
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker exec -i oracle-go godog
Creating oracle-go ... done
Error response from daemon: Container 7bab5322203756b972e7f0a3c6e5827413279914a68c705221b8af7daadc1149 is not running
如果有解决办法,请告诉我。
如果我对你的问题的理解正确,你希望在 运行 测试之前等待服务器启动。
您应该使用 wait-for-it.sh
(or an alternative). See the relevant Docker docs 来获取更多信息,而不是手动 sleep
ing。
例如:
test-e2e:
bash wait-for-it.sh <HOST>:<PORT> -- docker-compose -f ${DOCKER_COMPOSE_FILE} up -d ${APP_NAME} && docker exec -i oracle-go godog && docker-compose -f ${DOCKER_COMPOSE_FILE} down
将 <HOST>
和 <PORT>
分别更改为您的服务的主机名和端口。或者,您可以在 Docker Compose command
等中使用 wait-for-it.sh
。