2016-07-23 8 views
2

Я застрял в течение нескольких часов, пытаясь извлечь из git за прокси-сервер, работающий внутри контейнера докера.Получение git за прокси в контейнере докера

Removing intermediate container 84c4f6722d09 
Step 16 : RUN bundle install --without development test 
---> Running in bbc7bfff1bae 
Fetching gem metadata from https://rubygems.org/......... 
Fetching version metadata from https://rubygems.org/... 
Fetching dependency metadata from https://rubygems.org/.. 
Fetching git://github.com/seuros/state_machine.git 

Я могу подтвердить мой прокси-сервер работает на apt-get и ранее git clone команды в Dockerfile.

Любая идея, что вы делаете неправильно, пожалуйста?

Вот мой Dockerfile

FROM ruby:2.2.4 

LABEL Description="slack-standup-bot (`master`) from ruby:2.2.4" 

ENV DEBIAN_FRONTEND noninteractive 
ENV TERM xterm 


ENV http_proxy http://192.168.0.43:8888 
ENV https_proxy http://192.168.0.43:8888 

RUN export HTTP_PROXY=http://192.168.0.43:8888 
RUN export HTTPS_PROXY=http://192.168.0.43:8888 


# See https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/ 
RUN apt-get update && apt-get install -y \ 
    build-essential \ 
    libpq-dev \ 
    git-core \ 
    postgresql-client \ 
    nodejs \ 
    && rm -rf /var/lib/apt/lists/* 


RUN git config --global http.proxy http://192.168.0.43:8888 

RUN mkdir -p /srv 
WORKDIR /srv 
RUN git clone https://github.com/sofetch/slack-standup-bot.git 
WORKDIR /srv/slack-standup-bot 

ENV RAILS_ENV production 
RUN bundle install --without development test 

COPY wait-pg-and-start.sh /srv/slack-standup-bot/wait-pg-and-start.sh 
COPY start-rails.sh /srv/slack-standup-bot/start-rails.sh 
RUN chmod +x /srv/slack-standup-bot/wait-pg-and-start.sh /srv/slack-standup-bot/start-rails.sh 
+0

В дополнение к VonC-х ответ ниже, вы можете сохранить несколько строк здесь, используя доступные для вас встроенные ARG (для прокси). - https://docs.docker.com/engine/reference/builder/#/arg – johnharris85

ответ

3

Fetching git://github.com/seuros/state_machine.git: это не https protocol.
Это Git one (порт 9418 по умолчанию)

добавить на Dockerfile (до git clone):

RUN git config --global url."https://github.com/".insteadOf [email protected]: 

Таким образом, вы знаете, мерзавец будет использовать HTTPS URL, и выиграют от https proxy, который вы настроили.

1

Благодаря @VonC для указал мне в правильном направлении

Вот решение, чтобы решить эту проблему для Github

git config --global url."https://github.com/".insteadOf [email protected]: 
git config --global url."https://".insteadOf git:// 

Для битоприемник:

git config --global url."https://user:[email protected]".insteadOf ssh://[email protected]