Ошибка докера Debian: libpq.so.5: невозможно открыть файл общего объекта: такого файла или каталога нет

Я использую Docker для создания приложения Diesel Rust. Для простоты развертывания я использую приведенный ниже DockerFile для создания образа, но когда я пытаюсь запустить его, он выдает ошибку

/app/rest-jwt-rust: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory

Я попробовал установить libqp5 и libpqdev вместе с моей установкой, но проблема осталась та же.

#build from latst rust version
FROM rust:latest as build

# install libpq, libsqlite and create new empty binary project
RUN apt-get update; \
    apt-get install -y --no-install-recommends postgresql-common libpq-dev libpq5 libpq-dev libsqlite3-dev; \
    USER=root cargo new --bin app
WORKDIR /app

# copy manifests
COPY ./Cargo.toml ./Cargo.toml

# build this project to cache dependencies
RUN cargo build; \
    rm src/*.rs

# copy project source and necessary files
COPY ./src ./src
COPY ./migrations ./migrations
COPY ./diesel.toml .
COPY ./.env .

# rebuild app with project source
RUN rm ./target/debug/deps/rest_jwt_rust*; \
    cargo build --release

# deploy stage
FROM debian:buster-slim

# create app directory
RUN mkdir app
WORKDIR /app

# install libpq and libsqlite
RUN apt-get update; \
    apt-get install -y --no-install-recommends postgresql-common libpq-dev  libpq5 libpq-dev libsqlite3-dev; \
    rm -rf /var/lib/apt/lists/*

# copy binary and configuration files
COPY --from=build /app/target/release/rest-jwt-rust .
COPY --from=build /app/.env .
COPY --from=build /app/diesel.toml .
COPY ./wait-for-it.sh .

# expose port
EXPOSE 8080
# run the binary
CMD ["/app/rest-jwt-rust"]

Я думаю, вам нужен libpq5 в окончательном изображении, как в случае ошибки при загрузке общих библиотек: libpq.so.5: невозможно открыть файл общего объекта: при запуске приложения ржавчины нет такого файла или каталога, но похоже, что это там. (Действительно ли шаг apt-get install успешен? Попробуйте изменить ; на && в этой команде, чтобы избежать ошибок.)

David Maze 16.07.2024 00:21

Всегда используйте && вместо ;, если вас волнует, успешны ли команды.

cdhowie 16.07.2024 07:37

Также зависит ли ваше приложение конкретно от Debian Buster? Это два выпуска назад; вам следует использовать Bookworm.

cdhowie 16.07.2024 07:41
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

использование libpq-dev во время сборки и libpq5 для развертывания и обновления до bookworm заставило все работать.

Другие вопросы по теме