#svn #docker #bower
#svn #docker #bower
Вопрос:
Я пытался использовать docker для запуска моей среды разработки. В моем стеке есть частный реестр bower, который нуждается .bowerrc
в моем $HOME
.
Формат моего файла .bowerrc это:
/home/.bowerrc (внутри моего докера, установленного как том)
{
"registry": "https://<user>:<password>@bower.mycompany.com",
"timeout": 300000,
"strict-ssl": false
}
Способ монтирования этого файла в моем файле docker заключался в использовании этой команды:
docker run -it --net='host' -v $(pwd):/home/dev/app -v /home/USER/.dockershared/.bowerrc:/home/.bowerrc --name="myproject" --privileged bower-gulp:node0.12
Мой Dockerfile был создан для поддержки среды, использующей bower, gulp и svn. Это Dockerfile
FROM node:0.12-wheezy
RUN useradd -ms /bin/bash dev
RUN chown -R dev:dev /home/dev
USER dev
ENV HOME /home/dev
ENV PATH "$PATH:/home/dev/.npm-global/bin"
WORKDIR /home/dev/app
RUN mkdir /home/dev/.npm-global amp;amp;
npm config set prefix '/home/dev/.npm-global' amp;amp;
npm install -g bower gulp amp;amp;
apt-get install subversion
ENTRYPOINT ["/bin/sh", "-c", "/bin/bash"]
Мой package.json
файл, использующий bower install
команду, выглядит следующим образом:
{
"name": "my_project",
"version": "3.1.3",
"description": "",
"author": "",
"license": "ISC",
"repository": {
"type": "svn",
"url": "https://svn.mycompany.com/repos/My_repo"
},
"devDependencies": {
"bower": "1.x",
"del": "^2.2.0",
"gulp": "3.x",
"gulp-maven-deploy": "^0.2.0",
"gulp-rename": "^1.2.2",
"gulp-template": "^3.1.0",
"node-rest-client": "^1.8.0",
"run-sequence": "^1.1.5",
"svn-npm-crutch": "0.x"
},
"svnDependencies": {
"framework-tools-build": "https://svn.mycompany.com/repos/tools/build/trunk",
"framework-tools-functional-testing": "https://svn.mycompany.com/repos/tools/functional-testing/trunk"
},
"engines": {
"node": ">=0.8.0"
},
"scripts": {
"install": "bower install -F --allow-root amp;amp; node ./node_modules/svn-npm-crutch/lib/svn-npm-crutch.js",
"demo-mode": "gulp functional-test --browser=chrome --demo"
},
"config": {
"unsafe-perm": true
}
}
Наконец, когда я пытаюсь npm install
или bower install
получаю эту ошибку:
bower ECMDERR Failed to execute "svn list https://svn.mycompany.com/repos/ui/common/tags --verbose --non-interactive", exit code of #1 svn: OPTIONS of 'https://svn.mycompany.com/repos/ui/common/tags': authorization failed: Could not authenticate to server: rejected Basic challenge (https://svn.mycompany.com)
Additional error details:
svn: OPTIONS of 'https://svn.mycompany.com/repos/ui/common/tags': authorization failed: Could not authenticate to server: rejected Basic challenge (https://svn.mycompany.com)
Кто-нибудь может помочь мне понять это?
Комментарии:
1. Вам нужно сделать что-нибудь особенное для входа в SVN?
2. Нет, только установите моего пользователя и пароль в моем
.bowerrc
файле. Когда я пытаюсь это сделать на своем хост-компьютере, это работает нормально, но внутри моего контейнера docker нет = (3. Глупый вопрос, вы уверены
--net='host'
, что правильно использовать одинарные кавычки? Я никогда не использую его с кавычками. Действительно ли контейнер использует сетевой стек хоста?4. @Grif-fin наконец-то я это исправил. спасибо за ваши комментарии.
Ответ №1:
Наконец-то я понял проблему.
Сертификат SVN должен быть принят внутри контейнера docker. Для этого внутри контейнера docker, войдя в режим интерактивного подключения -ia
и используя точку входа в /bin/bash
консоль, я выполнил эту команду:
svn info <any_svn_respository_of_my_company>
пример
svn info https://svn.mycompany.com/repos/ui/common/
.
Затем я принял сертификат, и все работает нормально!
Ответ №2:
Это может быть связано с различием идентификаторов пользователей между вашим docker и вашим хост-компьютером. Таким образом, это приводит к тому, что docker не может прочитать файлы, необходимые для входа в систему.
Чтобы узнать ваш идентификатор пользователя (UID), запустите хост и docker: id -u $USER
Если они разные, я бы перестроил образ и создал пользователя внутри образа docker следующим образом: useradd -u 999 USERNAME
где 999 должен быть UID пользователя, которому принадлежат ваши учетные данные с вашего хост-компьютера, имя пользователя может отличаться.
Надеюсь, это решит вашу проблему, с уважением!
Комментарии:
1. когда я пытаюсь это сделать, сборка образа застревает.
2. Я попробовал на своей машине, и все прошло нормально. Я пытался
RUN useradd -ms /bin/bash -u 1001 dev
.