Как передать аргументы из docker-compose в Dockerfile? - PullRequest
0 голосов
/ 29 мая 2019

У меня есть небольшой Dockerfile в папке backend:

FROM alpine:latest

ARG FTP_IP
ARG MONGO_IP
ARG QUORUM_IP

RUN apk add --update openjdk8 && mkdir /var/backend/
RUN apk update
COPY license-system-0.0.1-SNAPSHOT.jar /var/backend/
EXPOSE 8080
ENTRYPOINT [ "java", "-jar", "-Dspring.quorum.host=${QUORUM_IP}", "-Dspring.ftp.server=${FTP_IP}", "-Dspring.data.mongodb.host=${MONGO_IP}","/var/backend/license-system-0.0.1-SNAPSHOT.jar" ]

И еще меньший docker-compose.yml:

version: "3"
services:
  generator:
    build: backend
    ports:
      - "8080:8080"

Я начинаю это с помощью скрипта bash:

#!/usr/bin/env bash

FTP_IP=$1 MONGO_IP=$2 QUORUM_IP=$3 docker-compose up -d

Примерно так:

start-backend.sh 127.0.0.1 127.0.0.1 http://localhost:22000

Но это совсем не работает ... когда я вызываю docker inspect на созданном контейнере, я получаю:

"Id": "bd3e05a8fffba6bb7b5c650d1f48c0ed13dca9108e01e1a82ec534a5f19d4393",
        "Created": "2019-05-29T09:38:32.723414205Z",
        "Path": "java",
        "Args": [
            "-jar",
            "-Dspring.quorum.host=${QUORUM_IP}",
            "-Dspring.ftp.server=${FTP_IP}",
            "-Dspring.data.mongodb.host=${MONGO_IP}",
            "/var/backend/license-system-0.0.1-SNAPSHOT.jar"
        ]

Что я делаю не так?

1 Ответ

0 голосов
/ 29 мая 2019

в вашем скрипте start-backend.sh вы использовали переменные FTP_IP, MONGO_IP и QUORUM_IP, которые являются локальными для скрипта, экспортируйте их как переменные env, и это будет работать.

Имейте в виду, что значения в оболочке имеют приоритет над значениями, указанными в файле .env и файле dockerfile, так что вы можете перезаписывать значения, определенные там ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...