【发布时间】:2020-10-20 06:18:05
【问题描述】:
我的 Dockerrun.aws.json 看起来像这样:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "abcd/haskell-binary-image",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "6000"
}
]
}
当我在 EB CLI 上运行 eb local run --port 6000 时,我收到以下错误:
latest: Pulling from abcd/haskell-binary-image
Digest: sha256:230d38fb8b3a8e95d538e5317982d6b85d12de5f02c3b07de369319766d657fc
Status: Image is up to date for abcd/haskell-binary-image:latest
docker.io/abcd/haskell-binary-image:latest
Sending build context to Docker daemon 4.608kB
Step 1/2 : FROM abcd/haskell-binary-image
---> b8d59f6eff42
Step 2/2 : EXPOSE 6000
---> Using cache
---> fcb117fc41f8
Successfully built fcb117fc41f8
/bin/image-exe: error while loading shared libraries: libgmp.so.10: cannot open shared object file: No such file or directory
当我使用 Web 客户端在 EB 上运行它时遇到了同样的问题。服务器在我的本地计算机上使用相同的 docker 映像运行,而不是在 Elastic Beanstalk 上运行。我的 Dockerfile 看起来像这样:
FROM fpco/stack-build:lts-15.16
ADD src src
ADD app app
FROM ubuntu:latest
RUN apt-get update && apt-get install -y \
ca-certificates \
libgmp-dev
ADD .stack-work/install/x86_64-linux-dkda49f7ca9b244180d3cfb1987cbc9743/219c4eef637de81431e864021af4dfc5a76fc6002e563868e1dfc24dcc774697/8.8.3/bin /bin/
EXPOSE 5000
ENTRYPOINT [ "/bin/image-exe" ]
编辑:
在二进制文件上运行 obj dump -p image-exe | grep NEEDED 会将以下内容列为共享库依赖项:
NEEDED libm.so.6
NEEDED libpthread.so.0
NEEDED librt.so.1
NEEDED libutil.so.1
NEEDED libdl.so.2
NEEDED libz.so.1
NEEDED libgmp.so.10
NEEDED libc.so.6
【问题讨论】:
-
难道不是
PATH? -
你能提供你的 Dockerfile 的最小工作示例吗?我可以在我的 EB 环境上运行它来测试,但我不能这样做,因为我不知道
ADD .stack-work/install/ ...是什么。 -
.stack-work/install/.... 链接到我在此容器中添加的 Haskell 程序中的可执行二进制文件。不知道如何在此处提供可以测试的示例。
标签: amazon-web-services docker haskell amazon-elastic-beanstalk