CircleCI Docker退出代码137

时间:2017-07-31 00:30:59

标签: docker circleci

我在我的CircleCI配置文件中使用- image: peopleperhour/dynamodb作为docker镜像。

在CircleCI中输出以下内容。

Initializing DynamoDB Local with the following configuration:
Port:   8000
InMemory:   false
DbPath: /var/dynamodb_local
SharedDb:   false
shouldDelayTransientStatuses:   false
CorsParams: *


Exited with code 137

第一次测试通过正常,Exited with code 137直到稍后才会发生。但是一旦发生错误,所有测试都会失败。

我看到this链接,并将我的代码更改为以下内容,但没有运气。

  - image: peopleperhour/dynamodb
    environment:
        MAX_HEAP_SIZE: 2048m
        HEAP_NEWSIZE: 512m

有关如何解决此问题的任何想法?

4 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。由于内存占用空间似乎较小,我最终只使用了本地堆栈。

我对该容器的配置如下:

- image: localstack/localstack
    environment:
      SERVICES: dynamodb:4570
      DEFAULT_REGION: us-west-2

答案 1 :(得分:0)

作为解决方法,您可以尝试为容器指定重新启动策略:

- image: peopleperhour/dynamodb
  restart: on-failure # Restart the container if it exits due to an error
  environment:
    MAX_HEAP_SIZE: 2048m
    HEAP_NEWSIZE: 512m

答案 2 :(得分:0)

您可以尝试其他3件事。

1:

将资源限制添加到config.yml的docker部分 资源:

            requests:
              memory: "2Gi"
            limits:
              memory: "4Gi"

默认资源是具有2个vCPU和4GB内存的中型资源。

2:

使用Java选项环境变量来设置内存限制。 https://circleci.com/blog/how-to-handle-java-oom-errors/

3:

如果您使用的是非基本帐户,则可以告诉Circleci使用其他计算机resource_class。您必须为此制定性能计划。 https://circleci.com/docs/2.0/configuration-reference/#resource_class

答案 3 :(得分:0)

我使用amazon/dynamodb-local容器在CircleCI上启动本地DynamoDB。我遇到了同样的问题,并且通过容器设置MAX_HEAP_SIZE和Java选项对我来说也不是很有效。我发现最好的方法是覆盖容器的入口点:

docker:
- image: amazon/dynamodb-local:1.13.1
  entrypoint: java -Djava.library.path=./DynamoDBLocal_lib -Xmx256m -jar DynamoDBLocal.jar -sharedDb -port 8000