У меня есть многоэтапный контейнер Docker, в котором я создаю jsonlog.
# Build stage
FROM postgres:11.5 AS build-env
ADD . /jsonlog
RUN apt-get update && apt-get install -y build-essential libkrb5-dev libssl-dev libpq-dev postgresql-server-dev-all
RUN cd /jsonlog && make install
# Used find to see where the output files are being installed
# RUN find / -name "*json*"
# Final stage
FROM postgres:11.5-alpine
COPY --from=build-env /usr/lib/postgresql/11/lib/bitcode/jsonlog/jsonlog.bc /usr/lib/postgresql/11/lib/bitcode/jsonlog/jsonlog.bc
COPY --from=build-env /usr/lib/postgresql/11/lib/bitcode/jsonlog.index.bc /usr/lib/postgresql/11/lib/bitcode/jsonlog.index.bc
COPY --from=build-env /usr/lib/postgresql/11/lib/jsonlog.so /usr/lib/postgresql/11/lib/jsonlog.so
Кажется, что docker build
в порядке.Однако, когда я делаю docker run
, я получаю эту ошибку.
LOG: invalid value for parameter "log_destination": "jsonlog"
DETAIL: Unrecognized key word: "jsonlog".
FATAL: configuration file "/etc/postgresql/postgresql.conf" contains errors
Код jsonlog приходит из этого репозитория https://github.com/michaelpq/pg_plugins/tree/master/jsonlog,, который я клонировал.Я монтирую только каталог jsonlog
в сборочный контейнер.
postgresql.conf
ванильный, за исключением этих строк.
log_destination = 'jsonlog'
logging_collector = on
shared_preload_libraries = 'jsonlog'
Причиной создания многоступенчатого контейнера являетсяизбавиться от зависимостей сборки и иметь меньший контейнер.Я хотел бы запустить postgres:11.5-alpine
, но я также получаю ошибки с postgres:11.5
образом.
Обновление
Я попытался избавиться от многоступенчатойи просто хранить все в одном контейнере следующим образом.
FROM postgres:11.5
ADD . /jsonlog
RUN apt-get update && apt-get install -y build-essential libkrb5-dev libssl-dev libpq-dev postgresql-server-dev-all
RUN cd /jsonlog && make install
Но это приводит к точной ошибке Unrecognized key word: "jsonlog"
.
Кроме того, я также попытался встроить контейнер Postgres 9.5 ипроисходит то же самое.