Docker 在alpine上安装MongoDB的问题

Docker 在alpine上安装MongoDB的问题,docker,alpine,Docker,Alpine,它显示错误 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 这是我的工作 ERROR: unsatisfiable constraints: so:libboost_chrono-mt.so.1.62.0 (missing

它显示错误

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
这是我的工作

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.sh是:

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" ]

MongoDB版本
3.4.4-r0
位于存储库中,需要安装另一个包,如
boost
boost iostreams
boost dev
etc版本
1.62.0-r5
。它们仅在存储库中可用。您只需将该存储库添加到alpine存储库的列表中:

#!/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

官方网站上有一些针对linux legacy x64的mongodb-*.tgz包:
-
-


这些可以在alpine linux 3.11中正常工作。

这对我来说很有用。。。也许它也会对你有用

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

使用/data文件夹,因为它是默认文件夹。其他名称会给您带来错误。

我的基本映像是alpine:3.8,我只想安装mongodb==3.4.4-r0。我遇到了一个错误<代码>错误:不可满足的约束:mongodb(缺失):由:world[mongodb]所需。自从mongodb从alpine 3.10中删除后,这将不再有效。查看“重大删除”部分。让我试试你的帖子。是的,成功。关键是。如果alpine是新版本,如何安装这些旧软件包?@focuszheng当packet manager尝试安装某个版本的“mongodb”时,它会解决其依赖项,然后在我们拥有的所有存储库中查找这些软件包及其版本。好的,关键是将特定存储库附加到/etc/apk/repositories。
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

VOLUME ["/data/db"]
WORKDIR /data
EXPOSE 27017