在高山上安装MongoDB时出现问题

foc*_*eng 1 docker alpine-linux

RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/community' >> /etc/apk/repositories
RUN apk update
RUN apk add mongodb==3.4.4-r0

RUN mongo --version
Run Code Online (Sandbox Code Playgroud)

它显示错误

ERROR: unsatisfiable constraints:
  so:libboost_chrono-mt.so.1.62.0 (missing):
    required by:
                 mongodb-3.4.4-r0[so:libboost_chrono-mt.so.1.62.0]
  so:libboost_filesystem-mt.so.1.62.0 (missing):
    required by:
                 mongodb-3.4.4-r0[so:libboost_filesystem-mt.so.1.62.0]
  so:libboost_iostreams-mt.so.1.62.0 (missing):
    required by:
                 mongodb-3.4.4-r0[so:libboost_iostreams-mt.so.1.62.0]
  so:libboost_program_options-mt.so.1.62.0 (missing):
    required by:
                 mongodb-3.4.4-r0[so:libboost_program_options-mt.so.1.62.0]
  so:libboost_regex-mt.so.1.62.0 (missing):
    required by:
                 mongodb-3.4.4-r0[so:libboost_regex-mt.so.1.62.0]
  so:libboost_system-mt.so.1.62.0 (missing):
    required by:
                 mongodb-3.4.4-r0[so:libboost_system-mt.so.1.62.0]
  so:libboost_thread-mt.so.1.62.0 (missing):
    required by:
                 mongodb-3.4.4-r0[so:libboost_thread-mt.so.1.62.0]
  so:libcrypto.so.41 (missing):
    required by:
                 mongodb-3.4.4-r0[so:libcrypto.so.41]
  so:libssl.so.43 (missing):
Run Code Online (Sandbox Code Playgroud)

Nic*_*lay 8

MongoDB的版本,3.4.4-r0位于阿尔卑斯山V3.6社区资料库,并要求另一包,比如boostboost-iostreamsboost-dev等版本1.62.0-r5进行安装。它们仅在Alpine v3.6主存储库中可用。您只需要将该存储库也添加到高山存储库的列表中:

RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/main' >> /etc/apk/repositories
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/community' >> /etc/apk/repositories
RUN apk update
RUN apk add mongodb=3.4.4-r0

RUN mongo --version
Run Code Online (Sandbox Code Playgroud)

  • 如果 alpine 是新版本,如何安装这些旧包? (2认同)

Max*_*xim 1

这对我来说是工作

FROM alpine:edge

RUN apk add --no-cache mongodb

VOLUME /data/db
EXPOSE 27017 28017

COPY run.sh /root
ENTRYPOINT [ "/root/run.sh" ]
CMD [ "mongod", "--bind_ip", "0.0.0.0" ]
Run Code Online (Sandbox Code Playgroud)

其中 run.sh 是:

#!/bin/sh
# Docker entrypoint (pid 1), run as root
[ "$1" = "mongod" ] || exec "$@" || exit $?

# Make sure that database is owned by user mongodb
[ "$(stat -c %U /data/db)" = mongodb ] || chown -R mongodb /data/db

# Drop root privilege (no way back), exec provided command as user mongodb
cmd=exec; for i; do cmd="$cmd '$i'"; done
exec su -s /bin/sh -c "$cmd" mongodb
Run Code Online (Sandbox Code Playgroud)

  • 自从 mongodb 从 alpine 3.10 中删除以来,这将不再起作用。https://alpinelinux.org/posts/Alpine-3.10.0-released.html 检查重大删除部分。 (3认同)
  • 我遇到了这个错误。`错误:无法满足的约束:mongodb(丢失):需要:world [mongodb]` (2认同)