Мне нужно объединить два разных файла dockerfile в один файл dockerfile с условиями, чтобы dockerfile работал в двух разных средах - PullRequest
0 голосов
/ 19 июня 2019

У меня есть докер-файл для Prometheus, который работает на amd64 и выглядит следующим образом

ARG ARCH="amd64"
ARG OS="linux"

FROM quay.io/prometheus/busybox-${OS}-${ARCH}:latest

LABEL maintainer="The Prometheus Authors <prometheus-developers@googlegroups.com>"

ARG ARCH="amd64"
ARG OS="linux"

COPY .build/${OS}-${ARCH}/prometheus        /bin/prometheus
COPY .build/${OS}-${ARCH}/promtool          /bin/promtool
COPY documentation/examples/prometheus.yml  /etc/prometheus/prometheus.yml
COPY console_libraries/                     /usr/share/prometheus/console_libraries/
COPY consoles/                              /usr/share/prometheus/consoles/

RUN ln -s /usr/share/prometheus/console_libraries /usr/share/prometheus/consoles/ /etc/prometheus/

RUN mkdir -p /prometheus && \
    chown -R nobody:nogroup etc/prometheus /prometheus

USER       nobody
EXPOSE     9090

VOLUME     [ "/prometheus" ]

WORKDIR    /prometheus

ENTRYPOINT [ "/bin/prometheus" ]

CMD        [ "--config.file=/etc/prometheus/prometheus.yml", \
             "--storage.tsdb.path=/prometheus", \
             "--web.console.libraries=/usr/share/prometheus/console_libraries", \
             "--web.console.templates=/usr/share/prometheus/consoles" ]

Опять у меня есть другой докер-файл, который работает на arm64

FROM debian:9

ARG PROMETHEUS_VERSION=2.8.1
ARG ARCH=arm64
ARG PROMETHEUS_URL=https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-arm64.tar.gz

RUN apt update && \
    apt install -y wget && \
    wget ${PROMETHEUS_URL} && \
    tar xzf prometheus-${PROMETHEUS_VERSION}.linux-${ARCH}.tar.gz prometheus-${PROMETHEUS_VERSION}.linux-arm64/prometheus && \
    cp prometheus-$PROMETHEUS_VERSION.linux-arm64/prometheus .

FROM busybox:1-glibc

ENV PROMETHEUS_STORAGE /data
ENV PROMETHEUS_LOG info

COPY --from=0 /prometheus /usr/local/bin/prometheus
COPY . .

VOLUME $PROMETHEUS_STORAGE

EXPOSE 9090

ENTRYPOINT [ "prometheus" ]

CMD [ "--config.file=./documentation/examples/prometheus.yml", \
      "--storage.tsdb.path=/data" ]

Проблема в том, что мне нужно объединить оба файла dockerfiles так, что если у меня есть среда amd64, она должна работать на amd, а если у меня среда arm64, она должна работать на arm64.

Оба файла Docker работают по отдельности.

Пожалуйста, помогите мне с проблемой. Я не получаю никакого способа решить эту проблему. Заранее спасибо

...