Cara membuat tumpukan lampu berbasis Docker menggunakan Docker-Compose di Ubuntu 18.04 Bionic Beaver Linux
- 4973
- 1404
- Dominick Barton
Objektif
Mengikuti tutorial ini Anda akan dapat membuat lingkungan lampu menggunakan teknologi Docker.
Persyaratan
- Izin root
- Pengetahuan Dasar Docker
Konvensi
- # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root
langsung sebagai pengguna root atau dengan menggunakansudo
memerintah - $ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa
Versi lain dari tutorial ini
Ubuntu 20.04 (fossa fokus)
Perkenalan
Docker adalah proyek open source yang bertujuan menyediakan perangkat lunak di dalam wadah
. Anda dapat menganggap wadah sebagai semacam "paket", lingkungan yang terisolasi yang berbagi kernel dengan mesin host dan berisi semua yang dibutuhkan aplikasi. Semua wadah dibangun menggunakan gambar-gambar
(Repositori Gambar Pusat untuk mereka menjadi Dockerhub).
Dalam tutorial ini, kita akan melihat cara membuat tumpukan lampu berdasarkan komponen berlabuh: mengikuti filosofi "satu layanan per kontainer", kami akan mengumpulkan lingkungan menggunakan Docker-Compose
, alat untuk mengatur komposisi wadah.
Satu layanan vs banyak layanan untuk wadah
Ada beberapa keuntungan dalam menggunakan satu layanan per kontainer, alih -alih menjalankan beberapa layanan di. Modularitas, misalnya, (kita dapat menggunakan kembali wadah untuk tujuan yang berbeda), atau pemeliharaan yang lebih baik: lebih mudah untuk fokus pada bagian lingkungan tertentu daripada mempertimbangkan semuanya sekaligus. Jika kita ingin menghormati filosofi ini, kita harus membuat wadah untuk setiap komponen tumpukan lampu kita: satu untuk Apache-PHP dan satu untuk database. Wadah yang berbeda harus dapat berbicara satu sama lain: untuk dengan mudah mengatur wadah terkait yang akan kami gunakan Docker-Compose
.
Langkah awal
Sebelum melanjutkan kita perlu menginstal buruh pelabuhan
Dan Docker-Compose
di sistem kami:
# apt-get install docker docker-compose
Paket akan dipasang dalam beberapa detik, dan buruh pelabuhan
Layanan akan dimulai secara otomatis. Kami sekarang dapat melanjutkan membuat direktori untuk proyek kami dan di dalamnya, yang lain untuk memegang halaman yang akan dilayani oleh Apache. DocumentRoot akan menjadi nama yang bermakna untuk itu; dalam hal ini satu -satunya halaman yang akan dilayani indeks.php
:
$ mkdir -p Dockerized-Lamp/DocumentRoot $ echo ""> Dockerized-Lamp/Documentroot/Index.php
Menyalin Di sini kode kami hanya terdiri dari phpinfo
Fungsi: Ini output (halaman yang menunjukkan informasi tentang PHP, jika Anda tidak tahu) akan menjadi apa yang akan ditampilkan server kami secara default. Sekarang mari kita gunakan editor favorit kami untuk membuat Docker-Compose.YML
File untuk proyek kami.
PHP-APACHE
Kami sekarang dapat mulai memberikan instruksi tentang membangun dan menghubungkan wadah kami ke dalam file komposisi Docker. Ini adalah file yang menggunakan yaml
sintaksis. Semua definisi harus diberikan ke dalam jasa
bagian.
Versi: Layanan '3': PHP-APACHE: Gambar: PHP: 7.2.Port 1 -Apache: - 80:80 Volume: - ./Documentroot:/var/www/html tautan: - 'mariadb'
Menyalin Mari kita lihat apa yang baru saja kita lakukan di sini. Baris pertama yang kami masukkan ke dalam file, Versi: kapan
, Menentukan versi Sintaks Kompose Docker apa yang akan kami gunakan, dalam hal ini versi 3
, Versi utama terbaru yang tersedia. Di dalam jasa
bagian, kami mulai menggambarkan layanan kami dengan menentukan namanya, PHP-APACHE
(Nama sewenang -wenang, Anda dapat menggunakan apa pun yang Anda inginkan), lalu instruksi untuk membangunnya.
Itu gambar
Kata kunci memberi tahu Docker gambar apa yang ingin kami gunakan untuk membangun wadah kami: dalam hal ini saya menggunakan 7.2.1-apache
yang akan memberi kami Php 7.2.1 Bersama dengan server web Apache. Butuh versi PHP lain? Anda hanya perlu memilih dari banyak yang disediakan di halaman gambar di Dockerhub.
Instruksi kedua yang kami berikan adalah Ports
: Kami menyuruh Docker untuk memetakan port 80
di tuan rumah kami, ke port 80
Pada wadah: cara ini akan muncul saat kami menjalankan server web secara langsung di sistem kami.
Kami kemudian menggunakan volume
instruksi untuk menentukan a Bind Mount
. Karena selama pengembangan, kode banyak berubah dan cepat, tidak masuk akal dalam meletakkan kode secara langsung di dalam wadah: dengan cara ini kita harus membangunnya kembali setiap kali kita membuat beberapa modifikasi. Sebaliknya, apa yang akan kita lakukan adalah memberitahu Docker untuk mengikat Root document
direktori, at /var/www/html
di dalam wadah. Direktori ini mewakili Apache utama VirtualHost
root dokumen, oleh karena itu kode yang kami masukkan ke dalamnya, akan segera tersedia.
Akhirnya kami menggunakan tautan
Kata Kunci Menentukan Mariadb
sebagai argumennya. Kata kunci ini tidak diperlukan, seperti kelihatannya, untuk membuat koneksi antara kedua wadah: bahkan tanpa menentukannya, Mariadb
Layanan akan dapat dijangkau dari dalam wadah yang dibangun untuk Apache-PHP
layanan, dengan menggunakan namanya sebagai nama host. Kata kunci melakukan dua hal: pertama mari kita tentukan secara opsional alias
Kami dapat menggunakan untuk merujuk suatu layanan selain namanya. Jadi, misalnya, dengan menulis:
Tautan: MariaDB: Layanan Database
Menyalin Layanan ini juga dapat dicapai menggunakan Database-Service
. Hal kedua tautan
tidak, tentukan ketergantungan: dalam hal ini PHP-APACHE
Layanan akan dianggap tergantung dari Mariadb
satu, jadi yang terakhir akan dimulai sebelum yang pertama saat membangun atau memulai lingkungan.
Pasang ekstensi PHP
Dockerfile php-apache default tidak termasuk beberapa ekstensi php, seperti mysqli atau pdo. Untuk menginstalnya, kami harus membangun DockerFile kami sendiri, berdasarkan itu. Untuk melakukan itu, kami membuat direktori di dalam proyek kami bernama PHP-Apache (ini akan menjadi milik kami membangun konteks
) dan di dalamnya, dockerfile kami. Tempel dan simpan kode di bawah ini sebagai PHP-Apache/Dockerfile:
Dari PHP: 7.2.1-APACHE MURTER EGIDIO DUCILE RUN DOCKER-PHP-EXT-INSTALL PDO_MYSQL MYSQLI
Menyalin Seperti yang Anda lihat, dengan DARI
Instruksi, kami menentukan bahwa DockerFile ini harus didasarkan pada yang default. Lalu kami memasukkan a BERLARI
Instruksi: Menggunakan skrip yang disediakan dalam gambar itu sendiri, Docker-php-ext-install
, Kami menyertakan ekstensi yang diperlukan untuk menggunakan PDO dan Mysqli. Pada titik ini, jika kami ingin menggunakan DockerFile khusus kami, kami harus sedikit mengubah bagian PHP-APACHE di Docker-Compose kami.YML, dengan cara ini:
Versi: Layanan '3': PHP-APACHE: Build: Context: ./PHP -APACHE Ports: - 80:80 Volume: - ./Documentroot:/var/www/html tautan: - 'mariadb'
Menyalin Apa yang telah berubah? Alih -alih secara langsung menentukan gambar jarak jauh yang akan digunakan, kami menyediakan konteks
instruksi, di dalam membangun
bagian, sehingga dockerfile yang terkandung dalam direktori yang kami buat dan di sini disediakan sebagai argumen, akan secara otomatis digunakan. Direktori konteks diimpor oleh Docker Daemon saat membangun gambar, jadi jika kami ingin menambahkan file tambahan, kami harus meletakkannya juga di sana.
Layanan database
Database di bagian penting dari lingkungan lampu, ini digunakan untuk kegigihan. Dalam hal ini kita akan menggunakan Mariadb
:
Mariadb: Gambar: Mariadb: 10.1 volume: - mariadb:/var/lib/mysql lingkungan: tz: "europe/rome" mysql_allow_empty_password: "no" mysql_root_password: "rootpwd" mysql_user: 'testUser' mysql_password: 'testpassword' testpassword '
Menyalin Kami sudah tahu apa itu gambar
kata kunci untuk. Hal yang sama berlaku untuk volume
instruksi, kecuali fakta bahwa kali ini kami tidak menyatakan a Bind Mount
, Sebaliknya, kami mereferensikan a volume bernama
, untuk kegigihan. Penting untuk fokus pada perbedaan antara keduanya untuk sesaat.
Seperti yang dikatakan sebelumnya, a Bind Mount
adalah cara cepat untuk memasang direktori host di dalam wadah, sehingga file yang terkandung dalam direktori tersebut dapat diakses dari dalam lingkungan terbatas: untuk menentukan bind mount, Sintaks pendek
adalah:
:
Jalur host dapat berupa relatif (ke file komposisi docker) atau jalur absolut, sedangkan titik mount di dalam wadah harus ditentukan dalam bentuk absolut.
A volume bernama
adalah sesuatu yang berbeda: itu benar Volume Docker
digunakan untuk kegigihan, dan umumnya lebih disukai daripada bind mount, karena tidak tergantung pada struktur file host (salah satu dari banyak keuntungan dari kontainer itu adalah portabilitas mereka). Sintaks yang akan digunakan untuk referensi a volume bernama
Di dalam definisi layanan adalah:
:
A volume bernama
siklus hidup tidak tergantung dari wadah yang menggunakannya, dan harus dinyatakan dalam volume
Bagian dari file komposisi Docker, seperti yang akan kita lihat sebentar lagi.
Kembali ke definisi layanan sekarang. Kata kunci terakhir yang kami gunakan adalah lingkungan
: Ini memungkinkan kita mengatur beberapa variabel lingkungan yang akan mempengaruhi perilaku layanan. Pertama kami gunakan Tz
Untuk menentukan zona waktu database kami: dalam hal ini saya menggunakan "Eropa/Roma". Nama -nama variabel lain mengatakan segalanya tentang tujuan mereka: Dengan menggunakannya, kami menetapkan detail penting sebagai nama basis data default yang akan dibuat (testdb), pengguna yang akan dibuat dan kata sandinya. Kami juga mengatur kata sandi pengguna root dan memutuskan untuk tidak mengizinkan kata sandi kosong.
Bagian volume
Di bagian ini kita harus menyatakan volume bernama
Kami direferensikan dari Mariadb
Definisi server:
Volume: Mariadb:
Menyalin Pada akhirnya, ini adalah bagaimana file kami akan terlihat secara keseluruhan:
Versi: Layanan '3': PHP-APACHE: Gambar: PHP: 7.2.Port 1 -Apache: - 80:80 Volume: - ./DocumentRoot:/var/www/html: z Links: - 'mariadb' mariadb: gambar: mariadb: 10.1 volume: - mariadb:/var/lib/mysql lingkungan: tz: "Eropa/rome" mysql_allow_empty_password: "no" mysql_root_password: "rootpwd" mysql_user: 'testUser' mysql_password: 'volumsword' maLumSword ': testpassword:' testpassword ':' maLum -maRumsword: 'maRiMADED:' maLUMADED: 'MARI -MOLUBASE:' TESTPASE: 'TESTPASE': 'TESTPASE': 'TestPass,' TestPass,
Menyalin Sangat penting untuk menghormati lekukan file yang akan ditafsirkan dengan benar.
Mari Bangun Lingkungan Kita
Setelah kami menentukan semua instruksi untuk layanan kami, kami dapat menggunakan Docker-Compose Up
Perintah untuk membangunnya. Perintah harus dieksekusi di dalam direktori yang sama di mana Docker-Compose.YML
File terletak:
# Docker-Compose Up
Beberapa menit dan kami akan siap untuk pergi. Pada akhirnya jika semuanya berjalan dengan baik, dengan menavigasi ke localhost
Di host kami, kami akan melihat output dari skrip PHP yang kami tempatkan di dalam Root document
:
Lingkungan lampu kami sekarang siap digunakan.
Menutup pikiran
Kami telah melihat cara membuat dasar LAMPU
lingkungan, menggunakan Docker dan mengatur kontainer dan layanan dengan Docker-Compose
. Pengaturan yang kami gunakan difokuskan pada pengembangan, dan dapat diperluas lebih lanjut dan diubah agar sesuai dengan kebutuhan yang berbeda: Dokumentasi Docker Ini adalah sumber tertulis yang sangat baik Anda dapat berkonsultasi untuk memperluas pengetahuan Docker Anda. Jangan ragu untuk meninggalkan komentar untuk keraguan atau pertanyaan apa pun yang Anda miliki.
Tutorial Linux Terkait:
- Hal -hal yang harus diinstal pada ubuntu 20.04
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
- Cara membuat tumpukan lampu berbasis Docker menggunakan Docker di…
- Ubuntu 20.04 trik dan hal -hal yang mungkin tidak Anda ketahui
- Ubuntu 20.04 Panduan
- Ubuntu 20.04 Hadoop
- 8 Lingkungan Desktop Ubuntu Terbaik (20.04 FOSSA FOCAL…
- Daftar dan Instalasi Klien FTP di Ubuntu 20.04 Linux…
- Cara Terhubung ke Docker Container Via SSH
- Cara memasang tumpukan lampu di almalinux
- « Cara Menginstal Perselisihan di Ubuntu 18.04 Bionic Beaver Linux
- Cara mengatur ulang kata sandi root mysql di ubuntu 18.04 Bionic Beaver Linux »