Keperluan:
Untuk mengikuti artikel ini, anda mesti memasang Docker di komputer anda. LinuxHint mempunyai banyak artikel yang boleh anda ikuti untuk memasang Docker pada edaran Linux yang anda inginkan jika anda belum memasangnya. Oleh itu, pastikan anda menyemak LinuxHint.sekiranya anda menghadapi masalah memasang Docker.
Memasang Docker Compose:
Anda boleh memuat turun fail binari Docker Compose dengan mudah dengan arahan berikut:
$ sudo curl -L "https: // github.com / docker / mengarang / melepaskan / memuat turun / 1.24.1 /docker-compose - $ (uname -s) - $ (uname -m) "-o / usr / local / bin / docker-compose
NOTA: kerinting mungkin tidak dipasang pada edaran Linux anda. Sekiranya demikian, anda boleh memasang curl dengan arahan berikut:
Ubuntu / Debian / Linux Mint:
$ sudo apt install curl -yCentOS / RHEL / Fedora:
$ sudo dnf memasang curl -ySekali dok-tulis fail binari dimuat turun, jalankan arahan berikut:
$ sudo chmod + x / usr / local / bin / docker-compose
Sekarang, periksa sama ada dok-tulis arahan berfungsi seperti berikut:
versi $ docker-composeIa harus mencetak maklumat versi seperti yang ditunjukkan dalam tangkapan skrin di bawah.
Menyiapkan Docker Compose untuk Projek:
Sekarang, buat direktori projek ~ / docker / gitserver (katakanlah) dan a repos / dan dan lain-lain/ direktori di dalam direktori projek untuk menyimpan git repositori dan beberapa fail konfigurasi.
$ mkdir -p ~ / docker / gitserver / repos, dll
Sekarang, arahkan ke direktori projek ~ / docker / gitserver seperti berikut:
$ cd ~ / docker / gitserver
Beginilah rupa pokok projek. Di sini, saya mempunyai 2 fail, git.pengesahan dan git-buat-repo.sh di dalam dan lain-lain/ direktori. Yang kosong repos / direktori untuk menyimpan semua repositori Git. A penjaga gits.Dockerfile untuk membina bekas Docker pelayan HTTP Git dan a dok-tulis.keladi fail.
Kandungan dari penjaga gits.Dockerfile:
DARI ubuntu: 18.04Jalankan apt kemas kini 2> / dev / null
RUN apt install -y git apache2 apache2-utils 2> / dev / null
JALANKAN a2enmod env cgi alias tulis semula
JALANKAN mkdir / var / www / git
RUN chown -Rfv www-data: www-data / var / www / git
SALINAN ./ dll / git.conf / etc / apache2 / laman web-tersedia / git.pengesahan
SALINAN ./ etc / git-create-repo.sh / usr / bin / mkrepo
JALANKAN chmod + x / usr / bin / mkrepo
JALANKAN a2dissite 000-default.pengesahan
JALANKAN git a2ensite.pengesahan
RUN git config - sistem http.beg terima benar
RUN git config - sistem http.muat naik benar
ENV APACHE_RUN_USER data www
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
PENDEDAHAN 80 / tcp
Kandungan dari dll / git.pengesahan Fail konfigurasi Apache:
Webmaster ServerAdmin @ localhost
TetapkanEnv GIT_PROJECT_ROOT / var / www / git
TetapkanEnv GIT_HTTP_EXPORT_ALL
SkripAlias / / usr / lib / git-core / git-http-backend /
Alias / / var / www / git
Pilihan + ExecCGI -MultiViews + SymLinksIfOwnerMatch
AllowOverride Tiada
Wajib semua diberikan
DocumentRoot / var / www / html
Pilihan Indeks FollowSymLinks MultiViews
AllowOverride Tiada
Wajib semua diberikan
KesalahanLog $ APACHE_LOG_DIR / ralat.balak
LogLevel memberi amaran
CustomLog $ APACHE_LOG_DIR / akses.log digabungkan
Kandungan dari dll / git-create-repo.sh Skrip shell:
#!/ 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
sentuh git-daemon-export-ok
cp hook / pasca kemas kini.contoh cangkuk / pasca kemas kini
git kemas kini-pelayan-maklumat
chown -Rf www-data: www-data "$ GIT_DIR / $ REPO_NAME.git "
gema "Git repositori '$ REPO_NAME' dibuat dalam $ GIT_DIR / $ REPO_NAME.git "
Akhirnya, kandungan dok-tulis.keladi fail:
versi: "3.7 "perkhidmatan:
pelayan git:
membina:
dockerfile: gitserver.Dockerfile
konteks: .
mulakan semula: selalu
pelabuhan:
- "8080: 80"
jilid:
- ./ repos: / var / www / git
Membina Gambar Docker Server HTTP Git:
Sekarang, untuk membina imej pelayan Git HTTP Server, jalankan arahan berikut:
binaan $ docker-compose
Mungkin memerlukan sedikit masa untuk membina gambar Docker tersuai.
Pada ketika ini, gambar Docker harus dibina.
Bila-bila masa anda membuat perubahan pada mana-mana penjaga gits.Dockerfile, dll / git.pengesahan, dll / git-create-repo.sh fail, anda mesti membina semula gambar Docker menggunakan binaan dok-komposit perintah.
Memulakan Pelayan HTTP Git:
Sekarang, untuk memulakan pelayan git perkhidmatan, jalankan arahan berikut:
$ docker-compose up -d
The pelayan git perkhidmatan harus bermula di latar belakang.
Untuk melihat bagaimana port dipetakan, jalankan arahan berikut:
$ docker-mengarang psSeperti yang anda lihat, untuk pelayan git perkhidmatan, port host Docker 8080 dipetakan ke port TCP kontena 80.
Membuat Repositori Git Baru di Pelayan:
Untuk membuat repositori Git baru ujian (katakanlah) pada bekas pelayan Git HTTP, jalankan arahan berikut:
$ mkrepo pelayan git-server exec docker-compose
Repositori Git baru ujian harus dibuat.
Mencari Alamat IP Docker Host:
Sekiranya anda ingin mengakses pelayan Git HTTP dari komputer lain di rangkaian anda, anda mesti mengetahui alamat IP host Docker anda.
Untuk mencari alamat IP host Docker anda, jalankan arahan berikut:
$ ipDalam kes saya, alamat IP hos Docker saya 192.168.20.160. Ia akan berbeza bagi anda. Oleh itu, pastikan untuk menggantinya dengan milik anda mulai sekarang.
Mengakses Git Repositori dari Pelayan:
Anda boleh mengakses repositori Git di pelayan menggunakan URL http: //
Di sini,
Jadi, dalam kes saya, untuk ujian repositori, URL harus http: // 192.168.20.160: 8080 / ujian.git
Sekarang, anda boleh mengklon repositori Git ujian dari pelayan seperti berikut:
$ git klon http: // 192.168.20.160: 8080 / ujian.git
Seperti yang anda lihat, repositori berjaya diklon. Tetapi sekarang kosong.
Direktori baru ujian / harus dibuat.
$ ls
Navigasi ke ujian / direktori.
$ cd ujian /
Sekarang, buat beberapa perubahan dan lakukan.
$ echo "selamat datang ke git-server"> mesej.txt$ git tambah -A
$ git komit -m 'komit awal'
$ git log - talian
Sekarang, tekan perubahan ke pelayan seperti berikut:
$ git push origin master
Seperti yang anda lihat, komit dihantar ke pelayan HTTP Git dengan jayanya.
Sekarang, orang lain boleh mengklon repositori Git ujian juga.
$ git klon http: // 192.168.20.160: 8080 / ujian.git
Navigasi ke ujian / direktori.
$ cd ujian /
Dan cari perubahan di sana.
Menghentikan Pelayan HTTP Git:
Untuk menghentikan pelayan git perkhidmatan, jalankan arahan berikut:
$ docker-mengarang
The pelayan git perkhidmatan harus dihentikan.
Jadi, itulah cara anda menyediakan pelayan Git HTTP menggunakan Docker. Terima kasih kerana membaca artikel ini.