Скопируйте аргумент docker в конфигурационный файл Angularjs

#angularjs #jenkins #environment-variables #dockerfile #runtime

#angularjs #дженкинс #переменные среды #dockerfile #время выполнения

Вопрос:

У меня есть простое приложение AngularJS, которое создается с помощью конвейера Jenkins и файла Docker. При запуске задания Jenkins устанавливается среда. Затем он создается в одной из двух сред: dev или integration. Что мне нужно, так это способ получить эту переменную в приложении angular.

Файл docker использует среду для создания различных параметров конфигурации, таких как:

     ARG env
    COPY build_config/${env} /opt/some/path...
 

Мне нужно вставить этот env в один из контроллеров. Есть ли способ скопировать env в контроллер. Я попытался сделать что-то вроде следующего:

     COPY ${env} path/to/angular/file/controller
 

Я искал и пробовал разные методы, но не могу найти решение для работы с конвейером Jenkins with Docker.

Комментарии:

1. ARG используется для создания переменной, в вашем случае имя переменной env . Переменная будет содержать некоторое строковое значение. Предположим, что env он имеет строковое значение dev . Ваша цель — скопировать строку dev path/to/angular/file/controller или скопировать файл / каталог dev path/to/angular/file/controller ?

2. @ShaneBishop Цель состоит в том, чтобы скопировать строку dev в контроллер.

Ответ №1:

Вы можете просто использовать RUN для записи строки в файл:

 RUN echo "$env" > path/to/angular/file/controller
 

Если вы хотите добавить к файлу вместо его перезаписи, используйте

 RUN echo "$env" >> path/to/angular/file/controller
 

Комментарии:

1. Как мне теперь получить доступ к строке в файле?

2. Вы могли cat бы использовать файл, чтобы получить содержимое файла: cat path/to/angular/file/controller

3. Есть ли способ присвоить содержимое этого файла переменной? Что-то вроде var baseUrl = ${env} "/rest/of/the/url" ?

4. Если вы хотите присвоить содержимое этого файла переменной в сценарии оболочки, вы можете использовать my_var="$(cat path/to/angular/file/controller)"

5. Его нет в сценарии оболочки. Мне нужно присвоить содержимое файла переменной в самом коде angularjs.