Size: a a a

Docker — русскоговорящее сообщество

2020 July 15

GG

George Gaál in Docker — русскоговорящее сообщество
что неудобно - у тебя в случае проблем больше уровней абстракции, которые надо понимать
источник

GM

Gleb Mekhrenin in Docker — русскоговорящее сообщество
George Gaál
одна команда для сборки, под капотом все равно docker build
наверняка оно жрет не ванильный докерфайл, а свой наркоформат
источник

GG

George Gaál in Docker — русскоговорящее сообщество
идеальная сборка выглядит как gradlew генерит jarник, а потом ты в докерфайле тупо добавляешь ЕДИНСТВЕННЫЙ джарник в стандартный openjdk alpine или что там у тебя (докерфайл ==3 строки)
источник

GM

Gleb Mekhrenin in Docker — русскоговорящее сообщество
все так
источник

GM

Gleb Mekhrenin in Docker — русскоговорящее сообщество
хотя если 100% компонентов это java и ни о какой унификации пайплайна речь не идет в плане других компонентов то и встроенные штуки эти пойдут
источник

I

Ilya in Docker — русскоговорящее сообщество
kоллеги, добрый день.
подскажите, пожалуйста, как в Dockerfile передавать в команду CMD переменные?

задава вот какая: запустить команду с токеном, который передается из Variable в .gitlab-ci
команда java -jar ServerCounter-1.0.jar TOKEN1 TOKEN2

сам Dockerfile
FROM java:8
COPY target/ServerCounter-1.0.jar .
ARG API_SECRET
ARG PTERO_TOKEN
RUN echo $PTERO_TOKEN
CMD java -jar ServerCounter-1.0.jar $(echo $API_SECRET) $(echo $PTERO_TOKEN)


при этом ни api, ни secret не появляется в конечной команде
источник

GG

George Gaál in Docker — русскоговорящее сообщество
Ilya
kоллеги, добрый день.
подскажите, пожалуйста, как в Dockerfile передавать в команду CMD переменные?

задава вот какая: запустить команду с токеном, который передается из Variable в .gitlab-ci
команда java -jar ServerCounter-1.0.jar TOKEN1 TOKEN2

сам Dockerfile
FROM java:8
COPY target/ServerCounter-1.0.jar .
ARG API_SECRET
ARG PTERO_TOKEN
RUN echo $PTERO_TOKEN
CMD java -jar ServerCounter-1.0.jar $(echo $API_SECRET) $(echo $PTERO_TOKEN)


при этом ни api, ни secret не появляется в конечной команде
Нифига не понял
источник

GG

George Gaál in Docker — русскоговорящее сообщество
Ты чушь какую-то сделал
источник

GG

George Gaál in Docker — русскоговорящее сообщество
Cmd переопределяется при запуске контейнера
источник

GG

George Gaál in Docker — русскоговорящее сообщество
Полностью
источник

I

Ilya in Docker — русскоговорящее сообщество
George Gaál
Ты чушь какую-то сделал
необходимо запустить команду с переменными, которые хранятся в гитлабе. команда всегда статичная, но в dockerfile не хочется хранить в открытую токены
источник

GG

George Gaál in Docker — русскоговорящее сообщество
В студию пайплайн гитлаба
источник

GG

George Gaál in Docker — русскоговорящее сообщество
обычно достаточно docker run -e env1=$GITLAB_VARIABLE imagename
источник

I

Ilya in Docker — русскоговорящее сообщество
build:
   stage: build
   image: docker:latest
   script:
       - echo $PTERO_TOKEN
       - echo $API_SECRET
       - docker build --build-arg PTERO_TOKEN=$PTERO_TOKEN --build-arg API_SECRET=$API_SECRET -t $PROD_IMAGE .
       - docker push $PROD_IMAGE


первые 2 - были для отладки
источник

GG

George Gaál in Docker — русскоговорящее сообщество
Но в твоём случае то же самое будет, что и docker run imagename java -jar имяджарника $GITLABENV1 $GITLABENV2
источник

I

Ilya in Docker — русскоговорящее сообщество
George Gaál
обычно достаточно docker run -e env1=$GITLAB_VARIABLE imagename
а что если сделать иначе?
в Dockerfile создавать run.sh, в которую передавать java… TOKEN TOKEN2
и далее CMD sh run.sh?
источник

GG

George Gaál in Docker — русскоговорящее сообщество
Ilya
build:
   stage: build
   image: docker:latest
   script:
       - echo $PTERO_TOKEN
       - echo $API_SECRET
       - docker build --build-arg PTERO_TOKEN=$PTERO_TOKEN --build-arg API_SECRET=$API_SECRET -t $PROD_IMAGE .
       - docker push $PROD_IMAGE


первые 2 - были для отладки
Ну, у тебя эти переменные вшиваются в имидж - ты этого хотел ?
источник

I

Ilya in Docker — русскоговорящее сообщество
да, всё так. имаж в локальном режистри. хочется «тупого» docker run image без -e env..
источник

GG

George Gaál in Docker — русскоговорящее сообщество
Ilya
а что если сделать иначе?
в Dockerfile создавать run.sh, в которую передавать java… TOKEN TOKEN2
и далее CMD sh run.sh?
Тогда уж скорее
ENTRYPOINT ["sh", "-c"]
CMD ["run.sh"]
источник

GG

George Gaál in Docker — русскоговорящее сообщество
Либо даже так
источник