Я определяю Dockerfile, где я устанавливаю sqlite3
в образе ubuntu
, что-то очень похожее (я также устанавливаю grpc и rust, а также все необходимые зависимости) для:
FROM ubuntu
RUN apt-get update && \
apt-get install -y sqlite3 libsqlite3-dev&& \
apt-get clean && \
apt-get autoremove
Я использую это изображение, чтобы построить в нем свой проект Rust. Проблема, с которой я сталкиваюсь, заключается в том, что cargo build
происходит сбой в моем GitLab CI из-за проблемы со связыванием:
Compiling migrations_macros v1.4.0
error: linking with `cc` failed: exit code: 1
...
= note: /usr/bin/ld: cannot find -lsqlite3
Я обнаружил, что это связано с тем, что символическая ссылка отсутствует на образе Docker, работающем на CI:
libsqlite3.so -> /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
пока файл libsqlite3.so.0.8.6
существует. Поэтому, если я создаю символическую ссылку во время заданий CI, у меня может быть рабочий обходной путь. Странная вещь заключается в том, что если я вытяну одно и то же точное изображение из своего реестра на моем компьютере и запустлю контейнер, я смогу создать его без каких-либо проблем и каких-либо изменений, потому что символическая ссылка действительно есть.
В чем может быть причина проблемы и как ее решить?