Jest-dynamoDB 连接在 docker 容器内被拒绝
Jest-dynamoDB connection gets refused inside of docker container
我有一套用 Jest 为 dynamoDB 编写的测试,它们使用 dynamodb-local 实例,如 here using this dependency 所述。我使用自定义构建的 Docker 图像构建一个容器,在其中执行测试。
这是 Docker 文件
FROM openjdk:8-jre-alpine
RUN apk -v --no-cache add \
curl \
build-base \
groff \
jq \
less \
py-pip \
python openssl \
python3 \
python3-dev \
yarn \
&& \
pip3 install --upgrade pip awscli boto3 aws-sam-cli
EXPOSE 8000
我yarn install
我所有的依赖然后yarn test
,此时经过很长一段时间它会输出这个:
Error
这是我使用的命令:
docker run -it --rm -p 8000:8000 -v $(pwd):/data -w /data aws-cli-java8-v15:latest
测试在我自己的机器上完全正常,但无论我使用什么项目或我在 Docker 文件连接中包含什么总是被丢弃。
我解决了这个问题,原来它与 Alpine Linux 有关。因为它使用musl而不是Glibc,本地dynamodb将无法启动,并且在执行后几秒钟就会崩溃,并且不会输出任何错误信息。解决方案是要么在 alpine 上使用 OracleJDK,考虑到他们的新许可证,这已经够难了,要么使用任何其他 OS 将 glibc 与 OpenJDK 结合使用。或者您可以尝试在 Alpine 上安装 glibc 并尝试 link 它到您的 OpenJDK,但这不是一个非常好的主意。
我有一套用 Jest 为 dynamoDB 编写的测试,它们使用 dynamodb-local 实例,如 here using this dependency 所述。我使用自定义构建的 Docker 图像构建一个容器,在其中执行测试。 这是 Docker 文件
FROM openjdk:8-jre-alpine
RUN apk -v --no-cache add \
curl \
build-base \
groff \
jq \
less \
py-pip \
python openssl \
python3 \
python3-dev \
yarn \
&& \
pip3 install --upgrade pip awscli boto3 aws-sam-cli
EXPOSE 8000
我yarn install
我所有的依赖然后yarn test
,此时经过很长一段时间它会输出这个:
Error
这是我使用的命令:
docker run -it --rm -p 8000:8000 -v $(pwd):/data -w /data aws-cli-java8-v15:latest
测试在我自己的机器上完全正常,但无论我使用什么项目或我在 Docker 文件连接中包含什么总是被丢弃。
我解决了这个问题,原来它与 Alpine Linux 有关。因为它使用musl而不是Glibc,本地dynamodb将无法启动,并且在执行后几秒钟就会崩溃,并且不会输出任何错误信息。解决方案是要么在 alpine 上使用 OracleJDK,考虑到他们的新许可证,这已经够难了,要么使用任何其他 OS 将 glibc 与 OpenJDK 结合使用。或者您可以尝试在 Alpine 上安装 glibc 并尝试 link 它到您的 OpenJDK,但这不是一个非常好的主意。