如何将 dos2unix 添加到基于 Alpine 的 docker 容器?

MrD*_*Duk 1 docker dockerfile alpine-linux

我有以下 dockerfile:

FROM haproxy:alpine

RUN apk --update add bash && apk --no-cache add dos2unix rsyslog supervisor wget curl ruby which py-setuptools py-pip && pip install awscli && chmod +x /*.sh

COPY *haproxy.cfg /etc/
COPY supervisord.ini /etc/
COPY rsyslog.conf /etc/

COPY entrypoint.sh /
RUN dos2unix /entrypoint.sh && apt-get --purge remove -y dos2unix

ENTRYPOINT ["/entrypoint.sh"]

EXPOSE 9999

CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.ini"]
Run Code Online (Sandbox Code Playgroud)

但是,当我构建它时,我得到:

fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
  dos2unix (missing):
    required by: world[dos2unix]
Run Code Online (Sandbox Code Playgroud)

我可以看到这里存在这个包:https : //pkgs.alpinelinux.org/packages?name=dos2unix&branch=&repo=&arch=&maintainer=

我究竟做错了什么?

Cha*_*ffy 5

从您自己的链接来看,dos2unix是(此时,2017 年 2 月)仅在 中testing,不在main或 中community。从相关文档中——

如果您在配置中只启用了主存储库,则 apk 将不会包含来自其他存储库的包。要在不更改存储库配置文件的情况下从 edge/testing 存储库安装软件包,请使用以下命令。这将告诉 apk 使用该特定存储库。

apk add cherokee --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted
Run Code Online (Sandbox Code Playgroud)

在这种情况下,你会想替换dos2unixcherokee

  • 该软件包已在存储库之间移动,因此您将需要此命令:`apk add dos2unix --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/community/ --allow-不可信` (10认同)