Docker + 旧版本 Elixir/Phoenix

Docker + older version of Elixir/Phoenix

我被要求将一个 Elixir/Phoenix 应用程序移动到 Docker,我之前没有这方面的经验。该应用程序使用 non-latest 版本的 Elixir 和 Phoenix,因此我不得不偏离通常关注最新版本的在线代码。这让我写了这个 Docker 文件

# FROM bitwalker/alpine-elixir:latest
FROM bitwalker/alpine-elixir:1.3.4
MAINTAINER Paul Schoenfelder <paulschoenfelder@gmail.com>

# Important!  Update this no-op ENV variable when this Dockerfile
# is updated with the current date. It will force refresh of all
# of the base images and things like `apt-get update` won't be using
# old cached versions when the Dockerfile is built.
ENV REFRESHED_AT=2017-07-26 \
    # Set this so that CTRL+G works properly
    TERM=xterm

# Install NPM
RUN \
    mkdir -p /opt/app && \
    chmod -R 777 /opt/app && \
    apk update && \
    apk --no-cache --update add \
      git make g++ wget curl inotify-tools \
      nodejs nodejs-current-npm && \
    npm install npm -g --no-progress && \
    update-ca-certificates --fresh && \
    rm -rf /var/cache/apk/*

# Add local node module binaries to PATH
ENV PATH=./node_modules/.bin:$PATH \
    HOME=/opt/app

# Install Hex+Rebar
RUN mix local.hex --force && \
    mix local.rebar --force

WORKDIR /opt/app

CMD ["/bin/sh"]

<then it goes on to add some elixir depedencies>

在 运行

sudo docker build -t phoenix .

我遇到了这个错误,想知道如何解决这个问题?在标题中注意到 'current' 我想知道是否使用旧版本的 nodejs,如果是,该怎么做?除此之外,我愿意接受任何和所有建议

ERROR: unsatisfiable constraints:
  nodejs-current-npm (missing):
    required by: world[nodejs-current-npm]
  musl-1.1.14-r14:
    breaks: musl-dev-1.1.14-r15[musl=1.1.14-r15]

看起来像 bitwalker/alpine-elixir issue 5:

when using tagged images, you may sometimes need to explicitly upgrade packages, as the installed packages are at the versions found when building the image.
Generally it's as simple as adding apk --update upgrade before any commands which install packages.

的确,当你比较old elixir 1.4.4-based Dockerfile, and the latest one时,你会看到后者先升级:

apk --no-cache --update upgrade && \
apk add --no-cache --update --virtual .elixir-build \
...

尝试将其添加到您的 Dockerfile。