Докер агент с Go - PullRequest
       15

Докер агент с Go

0 голосов
/ 02 марта 2019

Я пытаюсь создать агента Jenkins Docker, у которого есть Go.Ниже приведен мой Dockerfile.

После того, как я его соберу, если я попытаюсь: docker run myimage:0.0.1 go version возвращает версию Go, однако, если я попробую это сделать, он вообще не найдет Go.

docker run --privileged --dns 9.0.128.50 --dns 9.0.130.50 -d -P --name slave myimage:0.0.1
docker ps ## grab the port number
ssh -p PORT_NUMBER jenkins@localhost

Чего мне не хватает, чтобы сделать Go доступным для пользователя Jenkins?

FROM golang:1.11.5-alpine

RUN apk add --no-cache \
bash \
curl \
wget \
git \
openssh \
tar

COPY ssh/*key /etc/ssh/
COPY skel/ /home/jenkins
COPY id_rsa /home/jenkins/.ssh/id_rsa
COPY id_rsa.pub /home/jenkins/.ssh/id_rsa.pub

RUN addgroup docker \
    && adduser -s /bin/bash -h /home/jenkins -G docker -D jenkins \
    && echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers \
    && echo "jenkins:jenkinspass" | chpasswd \
    && chmod u+s /bin/ping \
    && chown -R jenkins:docker /home/jenkins \
    && mv /etc/profile.d/color_prompt /etc/profile.d/color_prompt.sh \
    && mv /bin/sh /bin/sh.bak \
    && ln -s /bin/bash /bin/sh

# Standard SSH port
EXPOSE 22

CMD ["/usr/sbin/sshd", "-D"]

1 Ответ

0 голосов
/ 02 марта 2019

Если вы запустите:

docker run myimage:0.0.1 which go

Вы увидите исполняемый файл по пути /usr/local/go/bin/go

Если вы подключитесь как пользователь jenkins через ssh и запустите /usr/local/go/bin/go version, все тоже будет работать.

Вывод:

  1. Установка Go предоставляется от имени пользователя root
  2. Пользователь jenkins добавлен после установки go и не имеет /usr/local/go/bin/go в своей переменной среды $PATH.

Решение:

  1. Добавить /usr/local/go/bin/go к $PATH для пользователя jenkins
  2. Использовать исполняемый файл go с полным путем.
...