Docker中通过Dockerfile安装MongoDB遇报错求助
解决Alpine Docker镜像安装指定版本MongoDB的包不存在报错
报错信息
[5/6] RUN apk add mongodb=3.4.4-r0: #8 0.327 ERROR: unable to select packages: #8 0.328 mongodb (no such package): #8 0.347 required by: world[mongodb=3.4.4-r0]. executor failed running [/bin/sh -c apk add mongodb=3.4.4-r0]: exit code: 1.
原Dockerfile代码
FROM alpine 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 CMD [ "mongod" ]
问题原因
Alpine v3.6属于旧版本,官方主源dl-cdn.alpinelinux.org已不再提供该版本的包,仅归档服务器保留相关资源;同时直接追加源会和默认源冲突,导致包检索失败。
解决方案
方案1:直接使用Alpine v3.6镜像(推荐)
直接指定基于alpine:3.6的基础镜像,其默认配置的源就是对应版本的归档源,无需手动修改:
FROM alpine:3.6 RUN apk update RUN apk add mongodb=3.4.4-r0 VOLUME ["/data/db"] WORKDIR /data EXPOSE 27017 CMD [ "mongod" ]
方案2:修改源为归档服务器
如果必须使用最新alpine镜像,可替换源为Alpine归档服务器地址,同时清空原有源配置避免冲突:
FROM alpine # 替换为Alpine v3.6的归档源,清空原有配置 RUN echo 'https://archive.alpinelinux.org/alpine/v3.6/main' > /etc/apk/repositories RUN echo 'https://archive.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 CMD [ "mongod" ]
内容的提问来源于stack exchange,提问作者Manish
相关产品推荐
相关产品推荐

