使用docker容器在Atlassian Bitbucket管道中进行测试
我正在使用dynamodb docker容器在Atlassian Bitbucket管道中运行一些测试。这些步骤在本地使用相同的docker run命令工作,但由于某些原因,在管道中运行时,db容器启动后,我无法连接到db容器:使用docker容器在Atlassian Bitbucket管道中进行测试,docker,amazon-dynamodb,bitbucket-pipelines,Docker,Amazon Dynamodb,Bitbucket Pipelines,我正在使用dynamodb docker容器在Atlassian Bitbucket管道中运行一些测试。这些步骤在本地使用相同的docker run命令工作,但由于某些原因,在管道中运行时,db容器启动后,我无法连接到db容器: image: python:3.6 pipelines: default: - step: caches: - docker script: - docker run -d -p 80
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命令返回:
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,您应该使用:
您可能需要将容器和内存的大小增加一倍,因为DynamoDB非常重,但它也可以在默认情况下工作。您不应该手动启动amazon/DynamoDB local,而是应该使用:
您可能需要将容器和内存的大小增加一倍,因为DynamoDB非常重,但它也可以在默认情况下工作。正如您在docker run命令中看到的,我需要覆盖docker容器的入口点。在阅读Atlassian文档时,我找不到使用“服务”选项的方法。@rcdsystems。我懂了。最有可能的是,您需要使用-sharedDb。在服务中还不可能做到这一点,但是您可以使用预定义的AWS\u访问密钥\u ID、AWS\u机密密钥\u访问密钥和AWS\u默认区域,就像我的示例中那样,然后在测试中使用相同的方法。执行此操作时,您将访问相同的数据库。根据它们的:-sharedDb-如果您指定-sharedDb,DynamoDB将为每个凭证和区域使用单个数据库文件,而不是单独的文件。因此,只需使用您在docker run命令中看到的相同凭据和区域,我需要覆盖docker容器的入口点。在阅读Atlassian文档时,我找不到使用“服务”选项的方法。@rcdsystems。我懂了。最有可能的是,您需要使用-sharedDb。在服务中还不可能做到这一点,但是您可以使用预定义的AWS\u访问密钥\u ID、AWS\u机密密钥\u访问密钥和AWS\u默认区域,就像我的示例中那样,然后在测试中使用相同的方法。执行此操作时,您将访问相同的数据库。根据它们的:-sharedDb-如果您指定-sharedDb,DynamoDB将为每个凭证和区域使用单个数据库文件,而不是单独的文件。所以只需使用相同的凭证和区域
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