From 8777ce032b8fd38149b07dd26ab852adb7bafe9a Mon Sep 17 00:00:00 2001 From: Eduardo Trujillo <ed@chromabits.com> Date: Fri, 22 Apr 2016 22:31:58 -0400 Subject: [PATCH] feat(posts): Add Haskell + Docker post --- blog.cabal | 6 +- images/posts/haskell-containers.png | Bin 0 -> 60079 bytes posts/2016-04-20-haskell-travis-docker.md | 161 +++++++++++++ server.hs | 266 +++++++--------------- site.hs | 30 +-- stack.yaml | 3 +- 6 files changed, 268 insertions(+), 198 deletions(-) create mode 100644 images/posts/haskell-containers.png create mode 100644 posts/2016-04-20-haskell-travis-docker.md diff --git a/blog.cabal b/blog.cabal index e1bf90c..b5b685a 100644 --- a/blog.cabal +++ b/blog.cabal @@ -17,7 +17,9 @@ executable blog default-language: Haskell2010 ghc-options: -threaded build-depends: base == 4.*, + lens, hakyll == 4.7.*, + hakyll-serve, filepath == 1.4.*, split == 0.2.*, random, @@ -33,10 +35,12 @@ executable server build-depends: base == 4.*, safe == 0.3.*, text, + lens, bytestring == 0.10.*, + hakyll-serve, warp == 3.*, warp-tls == 3.*, wai == 3.*, - wai-extra <= 3.0.14, + wai-extra >= 3.0.14, wai-app-static == 3.*, streaming-commons == 0.1.* diff --git a/images/posts/haskell-containers.png b/images/posts/haskell-containers.png new file mode 100644 index 0000000000000000000000000000000000000000..04fef08ce3e7b1adaf7dc38ec8e52495451cff4f GIT binary patch literal 60079 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 Uc|LyNEP_CHv<x&$)olX*3$K@nCjbBd literal 0 HcmV?d00001 diff --git a/posts/2016-04-20-haskell-travis-docker.md b/posts/2016-04-20-haskell-travis-docker.md new file mode 100644 index 0000000..a4b50c5 --- /dev/null +++ b/posts/2016-04-20-haskell-travis-docker.md @@ -0,0 +1,161 @@ +--- +title: Continuous integration for Haskell projects with Docker +date: Wed April 20 14:21:00 EDT 2016 +author: Eduardo Trujillo +uuid: ccdac18a-4592-4560-9505-8940bb69df46 +--- + +At my current job, we are starting to adopt Haskell to write some of our +backend APIs and, like other projects at the company, we are using Docker for +deploying them to staging and production environments. + +Working with Haskell required some re-thinking on how we do certain parts of +our workflow, but it also led to a much improved image size, with some extra +room for improvement. + + + +Unlike PHP or JavaScript, Haskell is a compiled language, meaning that some of +previous approaches we were using for building Docker images did not port that +well. + +For dynamic languages, we followed roughly these steps to build our images: + +- Use a base image with packages for the software we need (Debian, Alpine). +- Install server software, such as Nginx, Node.js, and PHP. +- Install language tools and package managers. +- Copy application sources. +- Download dependencies. +- Final optimizations and cleanup. + +This is a hybrid approach where we have both build and runtime dependencies on +the same Docker image, which is useful because image builders such as Quay.io +can automatically build the docker image for you on every commit without the +need of an additional step in the CI pipeline, and this also has the slight +advantage of having enough tooling inside a container for light debugging. + +As a result, the image size is not the smallest it could be since there is a +lot of things that are not commonly used during runtime. However, the added +convenience sort of out weighs the issues of having a larger image for these +cases. + +For Haskell projects, though, things are bit different, and not in a bad way: + +The community has made an excellent build tool called [Stack][3]. `stack` takes +care of mostly everything related to setting up your project: Installing GHC, +pulling dependencies, building, testing, coverage reports, documentation. When +paired with Nix, it can even pull non-Haskell dependencies for reproducible +builds. + +<div class="callout-quote"> +Stack takes care of mostly everything related to setting up your project. +</div> + +If we try to do a hybrid image approach like above using Stack, we mainly have +to do the following on a Dockerfile: + +- Download and install Stack. +- Copy application sources. +- Install GHC (`stack setup`). +- Compile project (`stack build`). + +This works, but it is extremely slow and the resulting images are huge +(+800MB!). + +On every Docker build, `stack` would have to download and install GHC, and then +proceed to download and compile every dependency of the project, which tended +to a good 30 minutes on a [Quay.io][2] worker node. + +When developing locally, you only have to go through this process every now and +then because most of it is cached in directories such as `~/.stack` and +`.stack-work`. + +Looking for faster build times and smaller images, I decided to experiment with +splitting the build and runtime aspects of the project. + +The build part was already setup since we were using Travis CI for running +unit and some integration tests. When compared to basic Docker image builders, +Travis CI has the clear benefit of having a cache that can be reused across +builds without too much work. This cache allowed us to keep our built +dependencies across builds, which reduced the build time to under 5 minutes. + +This enable caching of Stack builds, you just need to add the work directories +to the cache section of `.travis.yml`: + +```yaml +cache: + directories: + - "$HOME/.stack" + - .stack-work +``` + +So, getting the runtime half working meant taking the resulting build from the +previous steps and building a Docker container with enough dependencies and +data files for running the application. + +FPComplete has [a great article][1] out there on how to create minimal Docker +images for Haskell projects. + +The main difficulty with this process is that Haskell programs are not built +statically by default, meaning that you have to identify all the libraries the +binary is linked against and include them in the final runtime image. + +<div class="callout-quote"> +The main difficulty with this process is that Haskell programs are not built +statically... +</div> + +In order to keep things simple, I decided to stick to using a base image, which +we could use to pull in any dependencies we don't have, like `libcurl-dev`. + +I initially tried to use Alpine, since its known for being one of the smallest +images out there. However, getting a Haskell program running in it was not +trivial since it requires cross-compiling GHC. + +So I settled with `debian`, which is a larger image, but has almost everything +we need out of the box. + +Building a Docker image on Travis CI is a fairly simple process. Pushing it to +a registry and correctly tagging it was the annoying part. After a couple of +hours of trial and error, I made a small shell script for authenticating with +the registry and pushing a tagged image matching the current git tag and +branch. + +This script is called on the `after-success` step of the Travis CI build: + +```bash +#!/bin/bash +set -euo pipefail +IFS=$'\n\t' + +docker build -t myapp . + +# If this is not a pull request, update the branch's docker tag. +if [ $TRAVIS_PULL_REQUEST = 'false' ]; then + docker tag myapp quay.io/myorg/myapp:${TRAVIS_BRANCH/\//-} \ + && docker push quay.io/myorg/myapp:${TRAVIS_BRANCH/\//-}; + + # If this commit has a tag, use on the registry too. + if ! test -z $TRAVIS_TAG; then + docker tag myapp quay.io/myorg/myapp:${TRAVIS_TAG} \ + && docker push quay.io/myorg/myapp:${TRAVIS_TAG}; + fi +fi +``` + +As a result, we now have Docker images for our Haskell projects that are about +80 MB, which is not terrible, but can definitely be improved on. + +The next steps for me are investigating how to make our images even smaller by +using a smaller base image, and automate the deployment of development +and staging environments by having Travis CI notify a scheduler that a new +image has been built. + +I'm including some of my scripts and an example Dockerfile on a +[GitHub Gist][4] for reference. You will most likely have to modify them to +meet your needs. + +[1]: https://www.fpcomplete.com/blog/2015/05/haskell-web-server-in-5mb +[2]: https://quay.io +[3]: http://haskellstack.org/ +[4]: https://gist.github.com/etcinit/d484b72de336836a956eb51b3da231ad diff --git a/server.hs b/server.hs index 3c57426..ee45716 100644 --- a/server.hs +++ b/server.hs @@ -1,193 +1,93 @@ {-# LANGUAGE OverloadedStrings #-} -import Control.Concurrent (forkIO) -import qualified Data.ByteString as BS (ByteString, pack) -import Data.Maybe (fromMaybe, mapMaybe) -import Data.Monoid ((<>)) -import Data.Streaming.Network (HostPreference) -import Data.String (fromString) -import qualified Data.Text as T (Text, concat, pack) -import qualified Data.Text.Encoding as TE (encodeUtf8) -import Network.Wai (Application, Middleware, - pathInfo) -import Network.Wai.Application.Static (defaultWebAppSettings, - ss404Handler, - ssAddTrailingSlash, - ssIndices, ssMaxAge, - ssRedirectToIndex, - staticApp) -import Network.Wai.Handler.Warp (defaultSettings, runSettings, - setHost, setPort) -import Network.Wai.Handler.WarpTLS (runTLS, - tlsSettingsChain) -import Network.Wai.Middleware.AddHeaders (addHeaders) -import Network.Wai.Middleware.ForceDomain (forceDomain) -import Network.Wai.Middleware.ForceSSL (forceSSL) -import Network.Wai.Middleware.Gzip (def, gzip) -import Network.Wai.Middleware.RequestLogger (logStdout) -import Network.Wai.Middleware.Vhost (redirectTo) -import Safe (lastMay) -import System.Environment (lookupEnv) -import WaiAppStatic.Types (MaxAge (MaxAgeSeconds), - toPiece) - --- | The core application. --- It serves files from `_site` whic is where Hakyll will place the generated --- site. -staticSite :: Maybe String -> Application -staticSite path = staticApp - (defaultWebAppSettings $ fromString $ fromMaybe "_site" path) - { ssIndices = mapMaybe (toPiece . T.pack) ["index.html"] - , ssRedirectToIndex = False - , ssAddTrailingSlash = True - , ss404Handler = Just redirectApp - , ssMaxAge = MaxAgeSeconds 3600 - } - --- | 404 handler. --- We will redirect users to a 404 page if we can't locate the resource they --- are looking for. -redirectApp :: Application -redirectApp req sendResponse = sendResponse $ redirectTo "/" - --- | Gzip compression middleware. -gzipMiddleware :: Middleware -gzipMiddleware = gzip def - --- | Domain redirection middleware. --- When the site is live, we want to redirect users to the right domain name --- regarles of whether they arrive from a www. domain, the server's IP address --- or a spoof domain which is pointing to this server. -domainMiddleware :: Middleware -domainMiddleware = forceDomain - (\domain -> case domain of - "localhost" -> Nothing - "chromabits.com" -> Nothing - _ -> Just "chromabits.com") - --- | Common headers middleware. -headersMiddleware :: Middleware -headersMiddleware = addHeaders - [ ("X-Frame-Options", "SAMEORIGIN") - , ("X-XSS-Protection", "1; mode=block") - , ("X-Content-Type-Options", "nosniff") - ] - --- | Strict Transport Security middleware. -stsHeadersMiddleware :: Middleware -stsHeadersMiddleware = addHeaders - [("Strict-Transport-Security", "max-age=31536000; includeSubdomains")] - --- | Content Security Policy middleware. --- Here we add the CSP header which includes the policies for this blog. -cspHeadersMiddleware :: Middleware -cspHeadersMiddleware = addHeaders - [("Content-Security-Policy", TE.encodeUtf8 $ glue policies)] - where - glue :: [T.Text] -> T.Text - glue [] = "default-src 'none'" - glue [x] = x - glue xs = T.concat $ map (\x -> T.concat [x, "; "]) (init xs) ++ [last xs] - - policies :: [T.Text] - policies = [ "default-src 'self'" - , "script-src 'self' 'unsafe-inline' https://use.typekit.net" - <> " https://cdn.mathjax.org https://connect.facebook.net" - <> " https://*.twitter.com https://cdn.syndication.twimg.com" - <> " https://gist.github.com" - <> " https://*.google-analytics.com" - , "img-src 'self' https: data: platform.twitter.com" - , "font-src 'self' data: https://use.typekit.net" - <> " https://cdn.mathjax.org" - , "style-src 'self' 'unsafe-inline' https://use.typekit.net" - <> " platform.twitter.com https://assets-cdn.github.com" - , "frame-src https://www.youtube.com https://www.slideshare.net" - <> " staticxx.facebook.com www.facebook.com" - ] - --- | De-indefify middleware. --- Redirects any path ending in `/index.html` to just `/`. -deindexifyMiddleware :: Middleware -deindexifyMiddleware app req sendResponse = - if lastMay (pathInfo req) == Just "index.html" - then sendResponse $ redirectTo newPath - else app req sendResponse - where - newPath :: BS.ByteString - newPath = TE.encodeUtf8 $ processPath oldPath - - processPath :: [T.Text] -> T.Text - processPath xs = case xs of - [] -> "/" - _ -> T.concat $ map prefixSlash xs - - oldPath :: [T.Text] - oldPath = init $ pathInfo req - - prefixSlash :: T.Text -> T.Text - prefixSlash x = T.concat ["/", x] - --- | Serves a WAI Application on the specified port. --- The target port is printed to stdout before hand, which can be useful for --- debugging purposes. -listen :: Int -> Application -> IO () -listen port app = do - let settings = setHost "*6" (setPort port defaultSettings) - - -- Inform which port we will be listening on. - putStrLn $ "Listening on port " ++ show port ++ "..." - -- Serve the WAI app using Warp - runSettings settings app - --- | Serves a WAI Application on the specified port. --- The target port is printed to stdout before hand, which can be useful for --- debugging purposes. -listenTLS :: Int -> Application -> IO () -listenTLS port app = do +import Control.Lens +import Data.Monoid ((<>)) +import Data.Maybe (fromMaybe) +import System.Environment (lookupEnv) +import Hakyll.Serve.Main (TLSConfiguration(..), Stage(..), + defaultServeConfiguration, port, stage, middleware, stagingTransform, + tlsConfiguration, tlsPort, prodTransform, path, serve) +import Hakyll.Serve.Middleware (Directive(..), (<#>), gzipMiddleware, + domainMiddleware, securityHeadersMiddleware, stsHeadersMiddleware, + cspHeadersMiddleware, deindexifyMiddleware, forceSSLMiddleware, + loggerMiddleware) +import Hakyll.Serve.Listeners (TLSSettings, tlsSettingsChain) + +directives :: [Directive] +directives + = [ DefaultSrc ["'self'"] + , ScriptSrc [ + "'self'", "'unsafe-inline'", "https://use.typekit.net", + "https://cdn.mathkax.org", "https://connect.facebook.net", + "https://*.twitter.com", "https://cdn.syndication.twimg.com", + "https://gist.github.com" + ] + , ImgSrc ["'self'", "https:", "data:", "platform.twitter.com"] + , FontSrc [ + "'self'", "data:", "https://use.typekit.net", "https://cdn.mathjax.org" + ] + , StyleSrc [ + "'self'", "'unsafe-inline'", "https://use.typekit.net", + "platform.twitter.com", "https://assets-cdn.github.com" + ] + , FrameSrc [ + "https://www.youtube.com", "https://www.slideshare.net", + "staticxx.facebook.com", "www.facebook.com" + ] + ] + +getTLSSettings :: IO TLSSettings +getTLSSettings = do certPath <- lookupEnv "BLOG_TLS_CERT" chainPath <- lookupEnv "BLOG_TLS_CHAIN" keyPath <- lookupEnv "BLOG_TLS_KEY" - let tlsSettings = tlsSettingsChain - (fromMaybe "cert.pem" certPath) - [fromMaybe "fullchain.pem" chainPath] - (fromMaybe "privkey.pem" keyPath) - let settings = setHost "*6" (setPort port defaultSettings) - - -- Inform which port we will be listening on. - putStrLn $ "Listening on port " ++ show port ++ " (TLS)..." - -- Serve the WAI app using Warp - runTLS tlsSettings settings app + return $ tlsSettingsChain + (fromMaybe "cert.pem" certPath) + [fromMaybe "fullchain.pem" chainPath] + (fromMaybe "privkey.pem" keyPath) -- | The entry point of the server application. main :: IO () main = do - stage <- lookupEnv "BLOG_STAGE" - path <- lookupEnv "BLOG_PATH" - - let liveMiddleware = logStdout - $ cspHeadersMiddleware - $ headersMiddleware - $ domainMiddleware - $ forceSSL - $ deindexifyMiddleware - $ gzipMiddleware - $ staticSite path - - -- Depending on the stage we will choose a different set of middleware to - -- apply to the application. - case fromMaybe "dev" stage of - -- "Production" - "live" -> do - forkIO $ listenTLS 443 $ stsHeadersMiddleware liveMiddleware - listen 80 liveMiddleware - "staging" -> do - forkIO $ listenTLS 8443 liveMiddleware - listen 8080 liveMiddleware - -- "Development" - _ -> listen 9090 (logStdout - $ headersMiddleware - $ deindexifyMiddleware - $ gzipMiddleware - $ staticSite path - ) + rawStage <- lookupEnv "BLOG_STAGE" + rawPath <- lookupEnv "BLOG_PATH" + + tlsSettings <- getTLSSettings + + let liveMiddleware + = mempty + <#> loggerMiddleware + <#> cspHeadersMiddleware directives + <#> securityHeadersMiddleware + <#> domainMiddleware "chromabits" + <#> forceSSLMiddleware + <#> deindexifyMiddleware + <#> gzipMiddleware + let prodMiddlware = (mempty <#> stsHeadersMiddleware) <> liveMiddleware + + let tlsConf = TLSConfiguration (const liveMiddleware) tlsSettings 8443 + + let serveConf + = defaultServeConfiguration + & stage .~ case rawStage of + Just "live" -> Production + Just "staging" -> Staging + _ -> Development + & port .~ 9090 + & middleware .~ mempty + <#> loggerMiddleware + <#> securityHeadersMiddleware + <#> deindexifyMiddleware + <#> gzipMiddleware + & path .~ rawPath + & stagingTransform .~ + ((set tlsConfiguration $ Just tlsConf) + . (set middleware liveMiddleware) + . (set port 8080)) + & prodTransform .~ + ((set tlsConfiguration $ Just (tlsConf & tlsPort .~ 443)) + . (set middleware prodMiddlware) + . (set port 80)) + + serve serveConf diff --git a/site.hs b/site.hs index 31ad74a..b3003ec 100644 --- a/site.hs +++ b/site.hs @@ -3,16 +3,17 @@ import Control.Applicative import Control.Monad (liftM) -import Control.Monad.IO.Class +import Control.Lens ((&), (.~)) import qualified Data.Map as M import Data.Maybe (fromMaybe) -import Data.Monoid (mappend) import Data.List (intersperse, isSuffixOf) import Data.List.Split (splitOn) import Hakyll +import Hakyll.Serve (ServeConfiguration, defaultServeConfiguration, + hakyllConfiguration, hakyllServeWith) import Text.Highlighting.Kate.Styles (haddock) import Text.Pandoc.Options -import System.FilePath (combine, splitExtension, takeFileName) +import System.FilePath (splitExtension) import System.Random (randomRIO) -------------------------------------------------------------------------------- @@ -21,6 +22,9 @@ data SiteConfiguration = SiteConfiguration , siteGaId :: String } +serveConf :: ServeConfiguration +serveConf = defaultServeConfiguration & hakyllConfiguration .~ hakyllConf + -------------------------------------------------------------------------------- hakyllConf :: Configuration hakyllConf = defaultConfiguration @@ -37,18 +41,18 @@ siteConf = SiteConfiguration , siteGaId = "UA-47694260-1" } -feedConf :: String -> FeedConfiguration -feedConf title = FeedConfiguration - { feedTitle = "Chromabits: " ++ title - , feedDescription = "Personal blog" - , feedAuthorName = "Eduardo Trujillo" - , feedAuthorEmail = "ed@chromabits.com" - , feedRoot = "https://chromabits.com" - } +-- feedConf :: String -> FeedConfiguration +-- feedConf title = FeedConfiguration +-- { feedTitle = "Chromabits: " ++ title +-- , feedDescription = "Personal blog" +-- , feedAuthorName = "Eduardo Trujillo" +-- , feedAuthorEmail = "ed@chromabits.com" +-- , feedRoot = "https://chromabits.com" +-- } -------------------------------------------------------------------------------- main :: IO () -main = hakyllWith hakyllConf $ do +main = hakyllServeWith serveConf $ do let writerOptions = defaultHakyllWriterOptions { writerHtml5 = True , writerHighlightStyle = haddock @@ -159,7 +163,7 @@ main = hakyllWith hakyllConf $ do teaser <- loadAndApplyTemplate "templates/project-teaser.html" siteCtx $ dropMore compiled - saveSnapshot "teaser" teaser + _ <- saveSnapshot "teaser" teaser saveSnapshot "content" full >>= loadAndApplyTemplate "templates/default.html" siteCtx diff --git a/stack.yaml b/stack.yaml index e64e9f5..35b9bae 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,11 +1,12 @@ # For more information, see: https://github.com/commercialhaskell/stack/blob/release/doc/yaml_configuration.md # Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2) -resolver: lts-5.2 +resolver: lts-5.11 # Local packages, usually specified by relative directory name packages: - '.' +- '/home/etcinit/src/github.com/etcinit/hakyll-serve' # Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3) extra-deps: [] -- GitLab