使用 docker 容器在 Atlassian Bitbucket 管道中进行测试

Using a docker container for testing in Atlassian Bitbucket pipeline

我正在使用 dynamodb docker 容器在 Atlassian Bitbucket 管道中 运行 进行一些测试。这些步骤在本地使用相同的 docker run 命令在本地工作,但由于某种原因,我无法在 db 容器启动后连接到 运行 在管道中运行:

image: python:3.6

pipelines:
  default:
    - step:
        caches:
          - docker
        script:
          - docker run -d -p 8000:8000 --name dynamodb --entrypoint java amazon/dynamodb-local -jar DynamoDBLocal.jar -sharedDb -inMemory
          - curl http://localhost:8000
        services:
          - docker

curl 命令returns:

curl http://localhost:8000 % Total % Received % Xferd Average Speed
Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0
0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:-
-:-- 0curl: (56) Recv failure: Connection reset by peer 

我尝试使用 localhost 和 dynamodb 作为主机名,结果相同。我也在 Atlassian 社区上发布了这个,但没有得到答案。

您不应手动启动 amazon/dynamodb-local,而应使用 services

definitions:
  services:
    dynamodb-local:
      image: amazon/dynamodb-local
      memory: 2048
  pipelines:
    default:
      - step:
          image: python:3.6
          size: 2x
          services:
            - dynamodb-local
          script:
            - export DYNAMODB_LOCAL_URL=http://localhost:8000
            - export AWS_DEFAULT_REGION=us-east-1
            - export AWS_ACCESS_KEY_ID=''
            - export AWS_SECRET_ACCESS_KEY=''
            - aws --endpoint-url ${DYNAMODB_LOCAL_URL} dynamodb delete-table --table-name test || true
            - aws --endpoint-url ${DYNAMODB_LOCAL_URL} dynamodb create-table --cli-input-json file://test.table.json
            - python -m unittest test_module.TestClass

您可能需要将容器和内存的大小增加一倍,因为 DynamoDB 非常重量级(但它也可能适用于默认设置)。