Использование docker-контейнера для тестирования в конвейере Atlassian Bitbucket - PullRequest
0 голосов
/ 15 декабря 2018

Я использую Docker-контейнер DynamodB для запуска некоторых тестов в конвейере 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 возвращает:

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, но не получил ответов.

1 Ответ

0 голосов
/ 16 декабря 2018

Вы не должны запускать 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 довольнотяжелый вес (но он может работать и по умолчанию).

...