#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» отсутствует.
Шаги по воспроизведению проблемы:
- создайте Dockerfile https://gist.github.com/anumantharaja/afa1fc1684a58b2646e2ae2d80489686
- Запустите образ
- и внутри контейнера дайте 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. Я рад, что вы нашли свою проблему.