Условно npm установить ARG в Dockerfile - PullRequest
2 голосов
/ 25 апреля 2020

Я пытаюсь установить пакеты модулей узла из GitHub на основе аргумента. Я пытался, но я не понимаю этого решения полностью. В выполнении нет ошибки, но я уверен, что он не устанавливает пакет. Я запускаю контейнер локально перед развертыванием и получаю, что модуль не найден, ошибка

Dokerfile такова. Можно ли сохранить каждую команду в новой строке?

FROM node:10

ENV HOME /usr/src/reach-live-api

ARG siteval

RUN mkdir -p $HOME
RUN mkdir -p /root/.ssh
WORKDIR $HOME

COPY ./keys/reachlive_rsa /root/.ssh/id_rsa
RUN chmod 700 /root/.ssh/id_rsa
RUN echo "Host bitbucket.org\n\tStrictHostKeyChecking no\n" >> /root/.ssh/config

COPY . $HOME
RUN npm install --silent --production

RUN if [ "$siteval" = "prod" ]; then \
    RUN npm install "reach-live-elasticsearch@git+https://github.com/lalitmohan001/reach-live-elasticsearch-prod.git" \
    RUN npm install "reach-live-firebase@git+https://github.com/lalitmohan001/reach-live-firebase-prod.git" \
    RUN npm install "reach-live-paypal@git+https://github.com/lalitmohan001/reach-live-paypal-prod.git" \
    else \
    RUN npm install "reach-live-elasticsearch@git+https://github.com/lalitmohan001/reach-live-elasticsearch.git" \
    RUN npm install "reach-live-firebase@git+https://github.com/lalitmohan001/reach-live-firebase.git" \
    RUN npm install "reach-live-paypal@git+https://github.com/lalitmohan001/reach-live-paypal.git"; \
    fi 

RUN npm prune --production

RUN rm -fr .npm
RUN rm -fr /root/.ssh
RUN rm -fr keys

CMD ["npm", "start"]

Я использую следующую команду для построения

docker build -t gcr.io/reachlive-123/api:25Apr2020 . --build-arg siteval=dev

Помощь будет высоко ценится

1 Ответ

1 голос
/ 27 апреля 2020

Оказывается, проблема была в

RUN if [ "$siteval" = "prod" ]; then \
 RUN npm install "reach-live-elasticsearch@git+https://github.com/lalitmohan001/reach-live-elasticsearch-prod.git" \
 RUN npm install "reach-live-firebase@git+https://github.com/lalitmohan001/reach-live-firebase-prod.git" \
 RUN npm install "reach-live-paypal@git+https://github.com/lalitmohan001/reach-live-paypal-prod.git" \
 else \
 RUN npm install "reach-live-elasticsearch@git+https://github.com/lalitmohan001/reach-live-elasticsearch.git" \
 RUN npm install "reach-live-firebase@git+https://github.com/lalitmohan001/reach-live-firebase.git" \
 RUN npm install "reach-live-paypal@git+https://github.com/lalitmohan001/reach-live-paypal.git"; \
 fi 

Я изменил его на и он работает

RUN if [ "$arg" = "prod" ]; then \
 npm install reach-live-elasticsearch@git+https://github.com/lalitmohan001/reach-live-elasticsearch-prod.git \
 reach-live-firebase@git+https://github.com/lalitmohan001/reach-live-firebase-prod.git \ 
 reach-live-paypal@git+https://github.com/lalitmohan001/reach-live-paypal-prod.git ; \
 else \ 
 npm install reach-live-elasticsearch@git+https://github.com/lalitmohan001/reach-live-elasticsearch.git \ 
 reach-live-firebase@git+https://github.com/lalitmohan001/reach-live-firebase.git \ 
 reach-live-paypal@git+https://github.com/lalitmohan001/reach-live-paypal.git; \
 fi

Спасибо Павиттару Сингху за помощь в расчете это из!

...