Krav:
For å følge denne artikkelen må du ha Docker installert på datamaskinen din. LinuxHint har mange artikler du kan følge for å installere Docker på ønsket Linux-distribusjon hvis du ikke allerede har den installert. Så husk å sjekke LinuxHint.com i tilfelle du har problemer med å installere Docker.
Installere Docker Compose:
Du kan laste ned binærfil for Docker veldig enkelt med følgende kommando:
$ sudo curl -L "https: // github.com / docker / komponere / utgivelser / nedlasting / 1.24.1/docker-compose - $ (uname -s) - $ (uname -m) "-o / usr / local / bin / docker-compose
MERK: krølle kan ikke være installert på din Linux-distribusjon. Hvis det er tilfelle, kan du installere krøll med følgende kommando:
Ubuntu / Debian / Linux Mint:
$ sudo apt install krøll -yCentOS / RHEL / Fedora:
$ sudo dnf installer krøll -yEn gang docker-komponere binær fil lastes ned, kjør følgende kommando:
$ sudo chmod + x / usr / local / bin / docker-compose
Sjekk nå om docker-komponere kommandoen fungerer som følger:
$ docker-compose-versjonDen skal skrive ut versjonsinformasjonen som vist på skjermbildet nedenfor.
Sette opp Docker Compose for prosjektet:
Opprett nå en prosjektkatalog ~ / docker / gitserver (la oss si) og en repos / og etc/ katalogen i prosjektkatalogen for å beholde git-arkivene og noen konfigurasjonsfiler.
$ mkdir -p ~ / docker / gitserver / repos, etc
Gå nå til prosjektkatalogen ~ / docker / gitserver som følger:
$ cd ~ / docker / gitserver
Slik skal prosjekttreet se ut. Her har jeg to filer, git.konf og git-create-repo.sh i etc/ katalog. En tom repos / katalog for å beholde alle Git-arkivene. EN gitserver.Dockerfil for å bygge en tilpasset Git HTTP-server Docker-container og en docker-komponere.yaml fil.
Innholdet i gitserver.Dockerfil:
FRA ubuntu: 18.04KJØR apt oppdatering 2> / dev / null
KJØR apt installer -y git apache2 apache2-utils 2> / dev / null
KJØR a2enmod env cgi alias omskriv
KJØR mkdir / var / www / git
RUN chown -Rfv www-data: www-data / var / www / git
KOPIERE ./ etc / git.conf / etc / apache2 / sites-available / git.konf
KOPIERE ./ etc / git-create-repo.sh / usr / bin / mkrepo
KJØR chmod + x / usr / bin / mkrepo
KJØR a2dissite 000-standard.konf
LØP a2ensite git.konf
RUN git config --system http.mottakspakke sant
RUN git config --system http.uploadpack true
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
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 FORGRUNN
EKSPONER 80 / tcp
Innholdet i etc / git.konf Apache-konfigurasjonsfil:
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
Alternativer + ExecCGI -MultiViews + SymLinksIfOwnerMatch
Tillat overstyring Ingen
Krev alle gitt
DocumentRoot / var / www / html
Alternativer Indekser FollowSymLinks MultiViews
Tillat overstyring Ingen
Krever alt gitt
ErrorLog $ APACHE_LOG_DIR / feil.Logg
LogLevel advarer
CustomLog $ APACHE_LOG_DIR / tilgang.logg kombinert
Innholdet i etc / git-create-repo.sh Skallskript:
#!/ 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
berør git-daemon-export-ok
cp kroker / etter oppdatering.prøve kroker / etter oppdatering
git update-server-info
chown -Rf www-data: www-data "$ GIT_DIR / $ REPO_NAME.git "
ekko "Git-depotet" $ REPO_NAME "opprettet i $ GIT_DIR / $ REPO_NAME.git "
Til slutt, innholdet i docker-komponere.yaml fil:
versjon: "3.7 "tjenester:
git-server:
bygge:
dockerfile: gitserver.Dockerfil
kontekst: .
start på nytt: alltid
porter:
- "8080: 80"
volumer:
- ./ repos: / var / www / git
Bygger Git HTTP Server Docker Image:
Nå, for å bygge Git HTTP Server docker-bildet, kjører du følgende kommando:
$ docker-compose build
Det kan ta litt tid å bygge et tilpasset Docker-bilde.
På dette tidspunktet skal Docker-bildet bygges.
Når du gjør endringer i noen av gitserver.Dockerfil, etc / git.konf, etc / git-create-repo.sh må du gjenoppbygge Docker-bildet ved hjelp av docker-compose build kommando.
Starter Git HTTP-server:
Nå, for å starte git-server service, kjør følgende kommando:
$ docker-compose up -d
De git-server tjenesten skal starte i bakgrunnen.
For å se hvordan portene er kartlagt, kjør følgende kommando:
$ docker-komponere psSom du kan se, for git-server tjenesten, Docker-vertsporten 8080 er kartlagt til beholderens TCP-port 80.
Opprette nytt Git-arkiv på serveren:
Å lage et nytt Git-depot test (la oss si) på Git HTTP-serverbeholderen, kjør følgende kommando:
$ docker-compose exec git-server mkrepo test
Et nytt Git-depot test skal opprettes.
Finne IP-adressen til Docker Host:
Hvis du vil få tilgang til Git HTTP-serveren fra andre datamaskiner i nettverket ditt, må du vite IP-adressen til Docker-verten din.
For å finne IP-adressen til Docker-verten din, kjør følgende kommando:
$ ipI mitt tilfelle IP-adressen til min Docker-vert 192.168.20.160. Det vil være annerledes for deg. Så sørg for å erstatte den med din fra nå av.
Få tilgang til Git-arkiver fra serveren:
Du kan få tilgang til Git-arkivene på serveren ved hjelp av URL http: //
Her,
Så, i mitt tilfelle, for test repository, URL-adressen skal være http: // 192.168.20.160: 8080 / test.git
Nå kan du klone test Git-depotet fra serveren som følger:
$ git klon http: // 192.168.20.160: 8080 / test.git
Som du kan se, er lagringsområdet klonet. Men den er for øyeblikket tom.
En ny katalog test/ skal opprettes.
$ ls
Naviger til test/ katalog.
$ cd test /
Gjør nå noen endringer og begå det.
$ echo "velkommen til git-server"> melding.tekst$ git add -A
$ git commit -m 'initial commit'
$ git log --online
Nå skyver du endringene til serveren som følger:
$ git push origin master
Som du kan se, sendes forpliktelsene til Git HTTP-serveren.
Nå kan noen andre også klone test Git-arkivet.
$ git klon http: // 192.168.20.160: 8080 / test.git
Naviger til test/ katalog.
$ cd test /
Og finn endringene der.
Stoppe Git HTTP-serveren:
For å stoppe git-server service, kjør følgende kommando:
$ docker-komponer ned
De git-server tjenesten skal stoppes.
Så det er slik du konfigurerer en Git HTTP-server ved hjelp av Docker. Takk for at du leser denne artikkelen.