Числовое значение не может быть установлено как env с помощью Dockerfile # 27284

#docker #dockerfile #docker-machine

#docker #dockerfile #docker-machine

Вопрос:

Я пытаюсь создать dockerimage из файла docker, я устанавливаю ENV в Dockerfile (ENV GOROOT «/usr / share /go / 1.6»).. Но я не смог найти то же значение ENV внутри контейнера. Значение задано как «/usr / share / go». «/ 1.6» отсутствует.

Шаги по воспроизведению проблемы:

  1. создайте Dockerfile https://gist.github.com/anumantharaja/afa1fc1684a58b2646e2ae2d80489686
  2. Запустите образ
  3. и внутри контейнера дайте echo $GOROOT

Полученный результат: я получил /usr/share/go

Результат, который я ожидал: я ожидал /usr/share/go /1.6

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

1. Я попробовал это с помощью base image busybox ( нет расширения в Dockerfile) и получил ожидаемый результат.

2. — lorenzvth7 вы пробовали это? Это работает для вас?

3. Я покажу это в ответе. Я могу удалить его после того, как вы его увидите

Ответ №1:

Dockerfile

 FROM busybox

###   Add Env
ENV GOPATH /root/.gopkg/
ENV GOROOT /usr/share/go/1.6
ENV PATH $PATH:$GOROOT/bin
  

Создайте образ

 docker build -t rom .
  

Запустите контейнер из образа:

 docker run -d -it rom /bin/sh
5dea13c392bcf8740d918be61e8d0c22d20835353a020111f467b928a8990e08
  

Перейдите внутрь контейнера

 docker exec -it 5dea13c392bcf8740d918be61e8d0c22d20835353a020111f467b928a8990e08 /bin/sh
  

Повторите переменную env

 / # echo $GOROOT
/usr/share/go/1.6
  

Это не ответ. Просто чтобы показать ему, что это сработало в моем случае.
Возможно, это не работает с его базовым изображением.

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

1. Спасибо lorenzvth7.. Проблема была в моей стороне, теперь она работает нормально… Я жестко запрограммировал GOROOT / usr / share / go это значение в .bashrc, в чем и заключалась проблема…

2. Я рад, что вы нашли свою проблему.