weaveworks/build-haskell本Docker镜像专为Haskell代码构建设计,集成Haskell编译器(GHC)及主流构建工具(如Cabal、Stack),提供隔离、统一的Haskell项目构建环境。通过预配置必要的工具链,简化Haskell项目的编译、打包流程,避免因系统依赖差异导致的构建问题,适用于开发、测试及CI/CD场景。
通过docker run启动容器,挂载本地项目目录并执行构建命令:
bash# 示例:使用9.2版本镜像构建Cabal项目 docker run -v $(pwd)/my-haskell-project:/app -w /app haskell-build-image:9.2 cabal build
-v $(pwd)/my-haskell-project:/app:将本地项目目录挂载至容器内/app目录-w /app:设置工作目录为/app(项目根目录)haskell-build-image:9.2:指定镜像及版本标签(标签对应GHC版本)cabal build:构建命令(根据项目工具选择cabal或stack)构建完成后,将产物复制到本地目录:
bash# 示例:构建并导出Cabal产物 docker run -v $(pwd)/my-haskell-project:/app -w /app haskell-build-image:9.2 sh -c "cabal build && cp -r dist-newstyle /app/dist"
创建docker-compose.yml简化构建流程:
yamlversion: '3' services: haskell-builder: image: haskell-build-image:9.2 volumes: - ./my-haskell-project:/app # 挂载项目目录 - ~/.cabal/store:/root/.cabal/store # 挂载Cabal缓存(加速重复构建) working_dir: /app command: cabal build --enable-optimization # 带优化参数的构建命令 environment: - CABAL_UPDATE=true # 构建前更新Cabal包索引(可选)
执行构建:docker-compose up
| 环境变量 | 说明 | 默认值 |
|---|---|---|
HASKELL_VERSION | 指定Haskell版本(需镜像支持对应标签) | 9.2 |
BUILD_TOOL | 构建工具选择(cabal或stack) | cabal |
CABAL_UPDATE | 是否执行cabal update更新包索引 | false |
STACK_RESOLVER | Stack解析器版本(Stack项目使用) | 空 |
| 标签 | 说明 |
|---|---|
latest | 最新稳定GHC版本 |
9.6 | GHC 9.6.x版本 |
9.4 | GHC 9.4.x版本 |
9.2 | GHC 9.2.x版本 |
8.10 | GHC 8.10.x版本(LTS支持) |
~/.cabal/store、~/.stack)可大幅提升重复构建速度。cabal build,Stack项目使用stack build,需根据项目配置调整命令。cabal.project或stack.yaml中GHC版本匹配的镜像标签。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务