Изисквания:
За да следвате тази статия, трябва да имате инсталиран Docker на вашия компютър. LinuxHint има много статии, които можете да следвате, за да инсталирате Docker в желаната от вас дистрибуция на Linux, ако вече не сте го инсталирали. Така че, не забравяйте да проверите LinuxHint.com, в случай че имате проблеми с инсталирането на Docker.
Инсталиране на Docker Compose:
Можете да изтеглите двоичен файл на Docker Compose много лесно със следната команда:
$ sudo curl -L "https: // github.com / docker / compose / releases / download / 1.24.1 /docker-compose - $ (uname -s) - $ (uname -m) "-o / usr / local / bin / docker-compose
ЗАБЕЛЕЖКА: къдрица може да не се инсталира на вашата Linux дистрибуция. Ако случаят е такъв, можете да инсталирате curl със следната команда:
Ubuntu / Debian / Linux Mint:
$ sudo apt install curl -yCentOS / RHEL / Fedora:
$ sudo dnf инсталира curl -yВеднъж docker-compose двоичен файл е изтеглен, изпълнете следната команда:
$ sudo chmod + x / usr / local / bin / docker-compose
Сега проверете дали docker-compose команда работи по следния начин:
$ docker-compose версияТой трябва да отпечата информацията за версията, както е показано на екранната снимка по-долу.
Настройване на Docker Compose за проекта:
Сега създайте директория на проекта ~ / docker / gitserver (да речем) и a репо сделки / и и т.н. / директория в директорията на проекта за съхранение на git хранилища и някои конфигурационни файлове.
$ mkdir -p ~ / docker / gitserver / репозитори и т.н.
Сега отидете в директорията на проекта ~ / docker / gitserver както следва:
$ cd ~ / docker / gitserver
Ето как трябва да изглежда дървото на проекта. Тук имам 2 файла, git.конф и git-create-repo.ш в и т.н. / директория. Празна репо сделки / директория за съхранение на всички Git хранилища. A gitserver.Докер файл за изграждане на персонализиран Git HTTP сървър Docker контейнер и a docker-compose.ямъл файл.
Съдържанието на gitserver.Докер файл:
ОТ ubuntu: 18.04RUN apt актуализация 2> / dev / null
RUN apt install -y git apache2 apache2-utils 2> / dev / null
RUN a2enmod env cgi alias rewrite
РАБОТА mkdir / var / www / git
RUN chown -Rfv www-data: www-data / var / www / git
КОПИЕ ./ etc / git.conf / etc / apache2 / sites-available / git.конф
КОПИЕ ./ etc / git-create-repo.sh / usr / bin / mkrepo
РАБОТА chmod + x / usr / bin / mkrepo
RUN a2dissite 000-по подразбиране.конф
РАБОТА a2ensite git.конф
RUN git config --system http.getpack true
RUN git config --system http.uploadpack вярно
ENV APACHE_RUN_USER www-данни
ENV APACHE_RUN_GROUP www-данни
ENV APACHE_LOG_DIR / var / log / apache2
ENV APACHE_LOCK_DIR / var / lock / apache2
ENV APACHE_PID_FILE / var / run / apache2.pid
CMD / usr / sbin / apache2ctl -D ПРЕДИШНО
ЕКСПОЗИЦИЯ 80 / tcp
Съдържанието на и т.н. / git.конф Конфигурационен файл на Apache:
ServerAdmin уеб администратор @ localhost
SetEnv GIT_PROJECT_ROOT / var / www / git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias / / usr / lib / git-core / git-http-backend /
Псевдоним / / var / www / git
Опции + ExecCGI -MultiViews + SymLinksIfOwnerMatch
AllowOverride Няма
Изискване на всички предоставени
DocumentRoot / var / www / html
Опции Индекси FollowSymLinks MultiViews
AllowOverride Няма
Изискване на всички предоставени
ErrorLog $ APACHE_LOG_DIR / грешка.дневник
LogLevel предупреждава
CustomLog $ APACHE_LOG_DIR / достъп.дневник комбиниран
Съдържанието на и т.н. / git-create-repo.ш Сценарий на черупката:
#!/ bin / bashGIT_DIR = "/ var / www / git"
REPO_NAME = $ 1
mkdir -p "$ GIT_DIR / $ REPO_NAME.git "
cd "$ GIT_DIR / $ REPO_NAME.git "
git init --bare &> / dev / null
докоснете git-daemon-export-ok
cp куки / след актуализация.примерни куки / след актуализация
git update-server-info
chown -Rf www-data: www-data "$ GIT_DIR / $ REPO_NAME.git "
echo "Git хранилище '$ REPO_NAME' създадено в $ GIT_DIR / $ REPO_NAME.git "
И накрая, съдържанието на docker-compose.ямъл файл:
версия: „3.7 "услуги:
git-сървър:
изграждане:
dockerfile: gitserver.Докер файл
контекст: .
рестартиране: винаги
портове:
- "8080: 80"
обеми:
- ./ репозитори: / var / www / git
Изграждане на Git HTTP сървър Docker Изображение:
Сега, за да изградите образ на докер на Git HTTP Server, изпълнете следната команда:
$ docker-compose build
Изграждането на персонализирано изображение на Docker може да отнеме известно време.
В този момент образът на Docker трябва да бъде изграден.
Винаги, когато правите промени в някоя от gitserver.Докер файл, и т.н. / git.конф, и т.н. / git-create-repo.ш файл, трябва да възстановите образа на Docker с помощта на docker-compose build команда.
Стартиране на Git HTTP сървър:
Сега, за да започнете git-сървър услуга, изпълнете следната команда:
$ docker-compose up -d
The git-сървър услугата трябва да започне във фонов режим.
За да видите как се картографират портовете, изпълнете следната команда:
$ docker-compose psКакто можете да видите, за git-сървър услуга, хост портът на Docker 8080 се съпоставя с TCP порта на контейнера 80.
Създаване на ново Git хранилище на сървъра:
За да създадете ново хранилище на Git тест (да кажем) в контейнера на Git HTTP сървър изпълнете следната команда:
$ docker-compose exec git-server mkrepo test
Ново хранилище на Git тест трябва да се създаде.
Намиране на IP адреса на Docker Host:
Ако искате да получите достъп до Git HTTP сървъра от други компютри във вашата мрежа, трябва да знаете IP адреса на вашия Docker хост.
За да намерите IP адреса на вашия хост на Docker, изпълнете следната команда:
$ ipВ моя случай IP адресът на моя хост Docker 192.168.20.160. За вас ще е различно. Така че, не забравяйте да го замените от сега нататък.
Достъп до Git хранилища от сървъра:
Можете да получите достъп до хранилищата на Git на сървъра, като използвате URL адреса http: //
Тук,
Така че, в моя случай, за тест хранилище, URL адресът трябва да бъде http: // 192.168.20.160: 8080 / тест.git
Сега можете да клонирате тестовото Git хранилище от сървъра, както следва:
$ git clone http: // 192.168.20.160: 8080 / тест.git
Както можете да видите, хранилището е клонирано успешно. Но в момента е празно.
Нова директория тест/ трябва да се създаде.
$ ls
Придвижете се до тест/ директория.
$ cd тест /
Сега направете някои промени и го ангажирайте.
$ echo "добре дошъл в git-server"> съобщение.текст$ git add -A
$ git commit -m 'първоначален ангажимент'
$ git log --oneline
Сега натиснете промените на сървъра, както следва:
$ git push master master
Както можете да видите, комитите се изпращат успешно към Git HTTP сървъра.
Сега някой друг може да клонира и тестовото хранилище на Git.
$ git clone http: // 192.168.20.160: 8080 / тест.git
Придвижете се до тест/ директория.
$ cd тест /
И намерете промените там.
Спиране на Git HTTP сървъра:
За да спрете git-сървър услуга, изпълнете следната команда:
$ docker-compose down
The git-сървър услугата трябва да бъде спряна.
И така, вие настройвате Git HTTP сървър с помощта на Docker. Благодаря, че прочетохте тази статия.