我正在尝试制作Dockerized Yesod应用程序,并且已经在./my-app
目录下初始化了Yesod项目。我的Dockerfile如下:
FROM haskell:7.8
RUN apt-get update && apt-get install -y libpq5 libpq-dev
RUN cabal update
ADD my-app /opt/my-app
WORKDIR /opt/my-app
RUN cabal sandbox delete
RUN cabal sandbox init
RUN cabal install -j --only-dependencies
RUN cabal build
RUN dist/build/db-import/db-import
EXPOSE 3000
CMD ["dist/build/my-app/my-app", "production", "-p", "3000"]
当我真正去运行docker时,它能够构建所有依赖项,但是我收到了一个链接器错误:
/opt/my-app/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.4/cryptonite-0.3/libHScryptonite-0.3.a(generic.o):(.data+0x0): multiple definition of `gmtab'
/opt/my-app/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.4/cipher-aes-0.2.10/libHScipher-aes-0.2.10.a(aes_generic.o):(.data+0x0): first defined here
collect2: error: ld returned 1 exit status
我不完全确定在这里做什么,因为我已经使用haskell:latest
和haskell:7.10
尝试了此操作,但我仍然遇到了同样的错误。我不确定特定容器操作系统是否是Ubuntu。我很想听听有关此事的建议。
谢谢!
答案 0 :(得分:1)
正如@MichaelSnoyman所说,摆弄堆栈并将yesod-static的cabal文件依赖关系更改为 #headerwrap {
background: url(http://www.glitters20.com/wp-content/uploads/2012/11/Funny-Cow-37.gif) no-repeat center top;
margin-top: -50px;
padding-top:120px;
text-align:center;
background-attachment: relative;
background-position: center center;
min-height: 250px;
width: 100%;
/* -webkit-background-size: 100%;
-moz-background-size: 100%;
-o-background-size: 100%;
background-size: 100%; */
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
得到容器构建。