Krav:
För att följa den här artikeln måste du ha Docker installerat på din dator. LinuxHint har många artiklar som du kan följa för att installera Docker på din önskade Linux-distribution om du inte redan har den installerad. Så se till att kolla LinuxHint.com om du har problem med att installera Docker.
Installera Docker Compose:
Du kan ladda ner Docker Compose binär fil mycket enkelt med följande kommando:
$ 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
NOTERA: ringla kanske inte installeras på din Linux-distribution. Om så är fallet kan du installera curl med följande kommando:
Ubuntu / Debian / Linux Mint:
$ sudo apt install curl -yCentOS / RHEL / Fedora:
$ sudo dnf installera curl -yEn gång docker-compose binär fil laddas ner, kör följande kommando:
$ sudo chmod + x / usr / local / bin / docker-compose
Kontrollera nu om docker-compose kommandot fungerar enligt följande:
$ docker-compose-versionDen ska skriva ut versionsinformationen som visas på skärmdumpen nedan.
Konfigurera Docker Compose för projektet:
Skapa nu en projektkatalog ~ / docker / gitserver (låt oss säga) och a repor / och etc/ katalog i projektkatalogen för att hålla git-arkiv och vissa konfigurationsfiler.
$ mkdir -p ~ / docker / gitserver / repos, etc
Navigera nu till projektkatalogen ~ / docker / gitserver som följer:
$ cd ~ / docker / gitserver
Så här ska projektträdet se ut. Här har jag två filer, git.konf och git-create-repo.sh i etc/ katalog. En tom repor / katalog för att hålla alla Git-arkiv. A gitserver.Dockerfil för att bygga en anpassad Git HTTP-server Docker-behållare och en docker-compose.yaml fil.
Innehållet i gitserver.Dockerfil:
FRÅN ubuntu: 18.04KÖR apt-uppdatering 2> / dev / null
KÖR apt-installation -y git apache2 apache2-utils 2> / dev / null
KÖR a2enmod env cgi alias omskrivning
KÖR mkdir / var / www / git
KÖR chown -Rfv www-data: www-data / var / www / git
KOPIERA ./ etc / git.conf / etc / apache2 / sites-available / git.konf
KOPIERA ./ etc / git-create-repo.sh / usr / bin / mkrepo
KÖR chmod + x / usr / bin / mkrepo
KÖR a2dissite 000-standard.konf
KÖR a2ensite git.konf
KÖR git config --system http.mottagarpaket sant
KÖR 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 FOREGROUND
EXPONERA 80 / tcp
Innehållet i etc / git.konf Apache-konfigurationsfil:
ServerAdmin webbansvarig @ 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
Alternativ + ExecCGI -MultiViews + SymLinksIfOwnerMatch
AllowOverride None
Kräv alla beviljade
DocumentRoot / var / www / html
Alternativ Index FollowSymLinks MultiViews
AllowOverride None
Kräv alla beviljade
ErrorLog $ APACHE_LOG_DIR / fel.logga
LogLevel varnar
CustomLog $ APACHE_LOG_DIR / åtkomst.logg kombinerad
Innehållet i etc / git-create-repo.sh Skalskript:
#!/ 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
tryck på git-daemon-export-ok
cp krokar / efter uppdatering.provkrokar / efter uppdatering
git update-server-info
chown -Rf www-data: www-data "$ GIT_DIR / $ REPO_NAME.git "
ekot "Git-arkivet" $ REPO_NAME "skapat i $ GIT_DIR / $ REPO_NAME.git "
Slutligen, innehållet i docker-compose.yaml fil:
version: "3.7 "tjänster:
git-server:
bygga:
dockerfile: gitserver.Dockerfil
sammanhang: .
starta om: alltid
hamnar:
- "8080: 80"
volymer:
- ./ repos: / var / www / git
Building Git HTTP Server Docker Image:
Kör följande kommando för att bygga Git HTTP Server-dockeravbildningen:
$ docker-compose-byggnad
Det kan ta en stund att bygga en anpassad Docker-avbildning.
Vid denna punkt ska Docker-avbildningen byggas.
Närhelst du gör några ändringar i någon av gitserver.Dockerfil, etc / git.konf, etc / git-create-repo.sh måste du bygga om Docker-avbildningen med docker-compose-byggnad kommando.
Starta Git HTTP-server:
Nu, för att starta git-server tjänst, kör följande kommando:
$ docker-compose up -d
De git-server tjänsten bör börja i bakgrunden.
För att se hur portarna mappas, kör följande kommando:
$ docker-compose psSom du kan se, för git-server tjänst, Docker-värdporten 8080 mappas till behållarens TCP-port 80.
Skapa nytt Git-arkiv på servern:
Att skapa ett nytt Git-arkiv testa (låt oss säga) på Git HTTP-serverbehållaren, kör följande kommando:
$ docker-compose exec git-server mkrepo test
Ett nytt Git-arkiv testa bör skapas.
Hitta IP-adressen till Docker Host:
Om du vill komma åt Git HTTP-servern från andra datorer i ditt nätverk måste du känna IP-adressen till din Docker-värd.
För att hitta IP-adressen till din Docker-värd, kör följande kommando:
$ ipI mitt fall IP-adressen till min Docker-värd 192.168.20.160. Det kommer att vara annorlunda för dig. Så se till att ersätta den med din från och med nu.
Åtkomst till Git-arkiv från servern:
Du kan komma åt Git-förvaren på servern med URL: n http: //
Här,
Så i mitt fall för testa förvar, webbadressen ska vara http: // 192.168.20.160: 8080 / test.git
Nu kan du klona test Git-arkivet från servern enligt följande:
$ git-klon http: // 192.168.20.160: 8080 / test.git
Som du kan se klonas förvaret framgångsrikt. Men det är för närvarande tomt.
En ny katalog testa/ bör skapas.
$ ls
Navigera till testa/ katalog.
$ cd test /
Gör nu några ändringar och gör det.
$ echo "välkommen till git-server"> meddelande.Text$ git add -A
$ git commit -m 'initial commit'
$ git log - online
Tryck nu på ändringarna på servern enligt följande:
$ git push origin master
Som du ser skickas åtagandena till Git HTTP-servern framgångsrikt.
Nu kan någon annan också klona test Git-arkivet.
$ git-klon http: // 192.168.20.160: 8080 / test.git
Navigera till testa/ katalog.
$ cd test /
Och hitta förändringarna där.
Stoppa Git HTTP-servern:
För att stoppa git-server tjänst, kör följande kommando:
$ docker-komponerar ner
De git-server tjänsten bör stoppas.
Så det är så du ställer in en Git HTTP-server med Docker. Tack för att du läste den här artikeln.