我有一个引用 C 库的 Go 服务,在尝试运行我的 docker 映像时收到以下错误:
standard_init_linux.go:228: exec user process caused: no such file or directory
这不是standard_init_linux.go:190: exec 用户进程导致“没有这样的文件或目录”的重复 - Docker,因为我没有带有 CR 行结尾的入口点 shell 脚本。该网站上的其他一些人建议CGO_ENABLED=0
在编译时进行设置,但我当然不能这样做,因为这是一个 CGO 项目。
C 库安装在和/usr/local/lib/sgp4
目录下,其中包含一堆 .so 文件。Linux/IFORT
Linux/GFORTRAN
环境变量 LD_LIBRARY_PATH 设置为 /usr/local/lib/sgp4/Linux/IFORT。
在我的项目中,有一组包装器.h文件,CGO注释如下:
我的 Dockerfile 如下:
FROM [redacted]/alpine-base:3.17
RUN apk update && \
apk add curl jq
COPY etc/cfg/propagator.properties /usr/local/[redacted]/etc/cfg/
COPY bin/sgp4 /usr/local/[redacted]/bin/sgp4
COPY propagator/wrappers /usr/local/[redacted]/bin/wrappers
# Download library files
RUN mkdir -p /usr/local/sgp4/lib
RUN curl --output /usr/local/sgp4/lib/SGP4.tar …
Run Code Online (Sandbox Code Playgroud)