Docker +旧版Elixir / Phoenix

时间:2017-07-29 07:05:09

标签: docker elixir phoenix-framework alpine musl

我被要求将Elixir / Phoenix应用程序移动到Docker,我之前没有经验。该应用程序使用非最新版本的Elixir和Phoenix,因此我不得不偏离在线代码,该代码通常侧重于最新版本。这导致我编写了这个Dockerfile

# 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 .

我结束了这个错误并想知道如何绕过它?注意标题中的“当前”我想知道是否使用旧版本的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]

1 个答案:

答案 0 :(得分:0)

看起来像bitwalker/alpine-elixir issue 5

  

使用标记图像时,有时可能需要显式升级包,因为安装的包是在构建映像时找到的版本。
  通常,它就像在安装软件包的任何命令之前添加apk --update upgrade一样简单。

的确,当你比较old elixir 1.4.4-based Dockerfilelatest one时,你会看到后者的升级:

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

尝试将其添加到Dockerfile中。