Zahtjevi:
Da biste pratili ovaj članak, na računalu morate imati instaliran Docker. LinuxHint ima puno članaka koje možete pratiti kako biste instalirali Docker na željenu Linux distribuciju ako ga već niste instalirali. Dakle, svakako provjerite LinuxHint.com u slučaju da imate problema s instaliranjem Dockera.
Instaliranje Dockera Compose:
Binarnu datoteku Docker Compose možete preuzeti vrlo jednostavno pomoću sljedeće naredbe:
$ 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
BILJEŠKA: kovrča možda neće biti instaliran na vašoj Linux distribuciji. Ako je to slučaj, možete instalirati curl pomoću sljedeće naredbe:
Kovnica Ubuntu / Debian / Linux:
$ sudo apt install curl -yCentOS / RHEL / Fedora:
$ sudo dnf instaliraj curl -yJednom docker-compose binarna datoteka se preuzima, pokrenite sljedeću naredbu:
$ sudo chmod + x / usr / local / bin / docker-compose
Sada provjeri da li docker-compose naredba radi na sljedeći način:
$ docker-compose verzijaTrebao bi ispisati podatke o verziji kao što je prikazano na snimci zaslona u nastavku.
Postavljanje Docker Compose za projekt:
Sada izradite direktorij projekta ~ / docker / gitserver (recimo) i a repo poslovi / i itd / direktorij unutar direktorija projekta za čuvanje git spremišta i nekih konfiguracijskih datoteka.
$ mkdir -p ~ / docker / gitserver / repos, itd.
Sada se pomaknite do direktorija projekta ~ / docker / gitserver kako slijedi:
$ cd ~ / docker / gitserver
Ovako bi trebalo izgledati stablo projekata. Evo, imam 2 datoteke, git.konf i git-create-repo.sh u itd / imenik. Prazan repo poslovi / direktorij za čuvanje svih Git spremišta. A gitserver.Dockerfile za izgradnju prilagođenog spremnika Docker poslužitelja Git HTTP i a docker-compose.yaml datoteka.
Sadržaj gitserver.Dockerfile:
OD ubuntu: 18.04POKRENI apt ažuriranje 2> / dev / null
POKRENI apt install -y git apache2 apache2-utils 2> / dev / null
RUN a2enmod env cgi alias prepiši
POKRENI mkdir / var / www / git
RUNI chown -Rfv www-data: www-data / var / www / git
KOPIRATI ./ etc / git.conf / etc / apache2 / sites-available / git.konf
KOPIRATI ./ etc / git-create-repo.sh / usr / bin / mkrepo
POKRENI chmod + x / usr / bin / mkrepo
RUN a2dissite 000-zadano.konf
POKRENI a2ensite git.konf
POKRENI git config --sustav http.receivepack true
POKRENI git config --sustav http.uploadpack istina
ENV APACHE_RUN_USER www-podaci
ENV APACHE_RUN_GROUP www-podaci
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 PREDHOD
IZLOŽITE 80 / tcp
Sadržaj itd. / git.konf Apache konfiguracijska datoteka:
ServerAdmin webmaster @ localhost
SetEnv GIT_PROJECT_ROOT / var / www / git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias / / usr / lib / git-core / git-http-backend /
Alias / / var / www / git
Opcije + ExecCGI -MultiViews + SymLinksIfOwnerMatch
AllowOverride None
Zahtijevaj sve odobreno
DocumentRoot / var / www / html
Indeksi opcija FollowSymLinks MultiViews
AllowOverride None
Zahtijevaj sve odobreno
ErrorLog $ APACHE_LOG_DIR / error.zapisnik
LogLevel upozoriti
CustomLog $ APACHE_LOG_DIR / pristup.trupac kombiniran
Sadržaj itd. / git-create-repo.sh Scenarij školjke:
#!/ bin / bashGIT_DIR = "/ var / www / git"
REPO_NAME = 1 USD
mkdir -p "$ GIT_DIR / $ REPO_NAME.git "
cd "$ GIT_DIR / $ REPO_NAME.git "
git init --bare &> / dev / null
dodirnite git-daemon-export-ok
cp kuke / naknadno ažuriranje.uzorci udica / naknadno ažuriranje
git update-server-info
chown -Rf www-data: www-data "$ GIT_DIR / $ REPO_NAME.git "
echo "Git spremište '$ REPO_NAME' stvoreno u $ GIT_DIR / $ REPO_NAME.git "
Konačno, sadržaj docker-compose.yaml datoteka:
inačica: "3.7 "usluge:
git-poslužitelj:
izgraditi:
dockerfile: gitserver.Dockerfile
kontekst: .
ponovno pokretanje: uvijek
luke:
- "8080: 80"
svezaka:
- ./ repos: / var / www / git
Izgradnja slike Git HTTP poslužitelja Docker:
Sada, za izgradnju slike dockera Git HTTP poslužitelja, pokrenite sljedeću naredbu:
$ docker-compose build
Izrada prilagođene Dockerove slike može potrajati.
U ovom trenutku trebala bi se izgraditi Dockerova slika.
Kad god napravite bilo kakve promjene na bilo kojem od gitserver.Dockerfile, itd. / git.konf, itd. / git-create-repo.sh datoteku, morate obnoviti Docker sliku koristeći docker-compose graditi naredba.
Pokretanje Git HTTP poslužitelja:
Sada, za početak git-poslužitelj uslugu, pokrenite sljedeću naredbu:
$ docker-compose up -d
The git-poslužitelj usluga bi trebala započeti u pozadini.
Da biste vidjeli kako se mapiraju luke, pokrenite sljedeću naredbu:
$ docker-komponiraj psKao što vidite, za git-poslužitelj usluga, priključak Dockera 8080 preslikava se na TCP port spremnika 80.
Izrada novog Git spremišta na poslužitelju:
Da biste stvorili novo Git spremište test (recimo) na spremniku Git HTTP poslužitelja, pokrenite sljedeću naredbu:
$ docker-compose exec git-server mkrepo test
Novo Git spremište test treba stvoriti.
Pronalaženje IP adrese domaćina Dockera:
Ako želite pristupiti Git HTTP poslužitelju s drugih računala u mreži, morate znati IP adresu vašeg Dockera hosta.
Da biste pronašli IP adresu vašeg Dockera, pokrenite sljedeću naredbu:
$ ipU mom slučaju, IP adresa mog domaćina Dockera 192.168.20.160. Za vas će biti drugačije. Pazite da ga od sada zamijenite svojim.
Pristup Git spremištima s poslužitelja:
Git spremištima na poslužitelju možete pristupiti putem URL-a http: //
Ovdje,
Dakle, u mom slučaju, za test spremište, URL bi trebao biti http: // 192.168.20.160: 8080 / test.git
Sada možete klonirati testno Git spremište s poslužitelja na sljedeći način:
$ git klon http: // 192.168.20.160: 8080 / test.git
Kao što vidite, spremište je uspješno klonirano. Ali trenutno je prazan.
Novi direktorij test/ treba stvoriti.
$ ls
Idite na test/ imenik.
$ cd test /
Sada napravite neke promjene i izvršite ih.
$ echo "dobrodošla na git-server"> poruku.txt$ git dodaj -A
$ git commit -m 'početno predavanje'
$ git log --oneline
Sada pritisnite promjene na poslužitelju kako slijedi:
$ git push master master
Kao što vidite, predaje se uspješno šalju na Git HTTP poslužitelj.
Sad netko drugi može klonirati i testno Git spremište.
$ git klon http: // 192.168.20.160: 8080 / test.git
Idite na test/ imenik.
$ cd test /
I tamo pronađite promjene.
Zaustavljanje Git HTTP poslužitelja:
Za zaustavljanje git-poslužitelj uslugu, pokrenite sljedeću naredbu:
$ docker-sastavi dolje
The git-poslužitelj uslugu treba zaustaviti.
Dakle, tako postavljate Git HTTP poslužitelj pomoću Dockera. Hvala što ste pročitali ovaj članak.