Saki's 研究记录

golang: alpine image 编译 sqlite3

字数统计: 212阅读时长: 1 min
2021/12/04

背景

最近在看一个Golang的开源项目,项目中使用到了GORM但只支持了MySQLPostgreSQL,为了练手尝试添加对SQlite的支持。

1
2
3
4
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)

编写完代码后在本地go run运行很正常,但当使用alpine构建docker镜像时遇到了问题…

问题

编译会卡在sqlite3,报错信息为:

1
2
12 73.08 # github.com/mattn/go-sqlite3
12 73.08 cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in $PATH

原因及解决方法

原因是因为官方并没有提供预编译的包,需要自己编译,但是直接编译的话会提示报错,需要在先安装一下g++
我们只要在Dockerfile中添加以下内容:

1
2
3
4
RUN apk add --no-cache --virtual .build-deps \
ca-certificates \
gcc \
g++

问题即可解决。

示例

Done.

CATALOG
  1. 1. 背景
  2. 2. 问题
  3. 3. 原因及解决方法
  4. 4. 示例