스택은 stack image container
명령을 사용하여 서버에서 앱을 실행하기위한 도커 컨테이너를 만들 수 있습니다 (아래 참고 자료 참조).스택 이미지 컨테이너를 사용하는 방법은 무엇입니까?
이렇게 만든 도커 컨테이너에서 웹 서버에 어떻게 연결합니까?
문제를 설명하기 위해 간단한 앱을 만들었습니다. 전체 코드는 여기에서 확인하십시오 : https://github.com/seanhess/haskell-docker-example
이 응용 프로그램은 최소한의 변경으로 stack new
에서 작성되었습니다. 여기
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Network.Wai
import Network.HTTP.Types (status200)
import qualified Network.Wai.Handler.Warp as Warp
main :: IO()
main = Warp.run 8010 app
app :: Application
app req respond = do
(putStrLn $ "Request: " ++ (show req))
(respond $ responseLBS status200 [] "Hello World")
그리고 stack.yaml
resolver: nightly-2016-06-12
image:
container:
name: haskell-docker-example
base: fpco/stack-run
이 응용 프로그램은 응답을 Main.hs
의에 "Hello World"로컬로 실행합니다.stack build
stack exec haskell-docker-example
하지만 당신은 고정 표시기 이미지를 구축하고 시작하는 경우 :
stack image container
docker run -it -p 8010:8010 haskell-docker-example
요청이 고정 표시기 컨테이너에 도달하지만, 그 뒤에 아무것도 없기 때문에 우리가 빈 응답 오류가 발생합니다.
$ curl -i http://localhost:8010
curl: (52) Empty reply from server
참고 :
- http://www.yesodweb.com/blog/2015/12/yesod-hosting-docker-kubernetes
- https://github.com/commercialhaskell/stack/issues/2337
- http://docs.haskellstack.org/en/stable/GUIDE/#docker
업데이트 : 나는 주위를 더 파고 있어요. 실행중인 컨테이너에 연결할 때 내 앱이 실행되고 있지 않습니다. 내가 손으로 그것을 실행하려고하면 나는 다음과 같은 오류가 발생합니다 :
/usr/local/bin/haskell-docker-example-exe
bash: /usr/local/bin/haskell-docker-example-exe: cannot execute binary file: Exec format error
일부 인터넷 검색이 32 비트 시스템에서 64 비트 코드를 실행하려고 할 때이 올 수 있습니다 제안합니다. 그게 가능하니? 중요한 일이라면 나는 mac osx에있다.