Cara membuat timbunan lampu berasaskan docker menggunakan docker-compose di Ubuntu 18.04 Bionic Beaver Linux

Cara membuat timbunan lampu berasaskan docker menggunakan docker-compose di Ubuntu 18.04 Bionic Beaver Linux

Objektif

Mengikuti tutorial ini, anda akan dapat mewujudkan persekitaran lampu menggunakan teknologi Docker.

Keperluan

  • Keizinan akar
  • Pengetahuan asas Docker

Konvensyen

  • # - Memerlukan arahan Linux yang diberikan dengan keistimewaan akar sama ada
    secara langsung sebagai pengguna akar atau dengan menggunakan sudo perintah
  • $ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Versi lain dalam tutorial ini

Ubuntu 20.04 (Focal Fossa)

Pengenalan


Docker adalah projek sumber terbuka yang bertujuan menyediakan perisian di dalamnya bekas. Anda boleh memikirkan bekas sebagai semacam "pakej", persekitaran terpencil yang berkongsi kernel dengan mesin tuan rumah dan mengandungi semua keperluan aplikasi. Semua bekas dibina menggunakan imej (Repositori Imej Pusat untuk mereka menjadi DockerHub).

Dalam tutorial ini, kita akan melihat bagaimana untuk membuat timbunan lampu berdasarkan komponen dockerized: mengikuti falsafah "satu perkhidmatan per bekas", kita akan memasang persekitaran yang menggunakan Docker-compose, alat untuk mengatur komposisi kontena.

Satu Perkhidmatan vs Pelbagai Perkhidmatan untuk Bekas

Terdapat beberapa kelebihan dalam menggunakan satu perkhidmatan setiap bekas, bukannya menjalankan pelbagai perkhidmatan yang sama. Modulariti, sebagai contoh, (kita boleh menggunakan semula bekas untuk tujuan yang berbeza), atau pemeliharaan yang lebih baik: lebih mudah untuk memberi tumpuan kepada sekeping persekitaran tertentu dan bukannya mempertimbangkan semuanya sekaligus. Sekiranya kita ingin menghormati falsafah ini, kita mesti membuat bekas untuk setiap komponen timbunan lampu kita: satu untuk Apache-PHP dan satu untuk pangkalan data. Bekas yang berbeza mesti dapat bercakap antara satu sama lain: dengan mudah mengatur bekas yang dipautkan Docker-compose.

Langkah awal

Sebelum meneruskan kita perlu memasang Docker dan Docker-compose pada sistem kami:

# apt-get Pasang Docker Docker-Compose

Pakej akan dipasang dalam beberapa saat, dan Docker perkhidmatan akan dimulakan secara automatik. Kami kini boleh meneruskan direktori untuk projek kami dan di dalamnya, satu lagi untuk memegang halaman yang akan disampaikan oleh Apache. Documentroot akan menjadi nama yang bermakna untuknya; dalam kes ini satu -satunya halaman yang akan disampaikannya indeks.php:

$ mkdir -p dockerized-lamp/documentroot $ echo ""> dockerized-lamp/documentroot/index.php 
Salinan

Di sini kod kami hanya terdapat di phpinfo Fungsi: Output (halaman yang menunjukkan maklumat mengenai PHP, sekiranya anda tidak tahu) akan menjadi apa yang akan dipaparkan oleh pelayan kami secara lalai. Sekarang mari kita gunakan editor kegemaran kami untuk mencipta Docker-compose.yml fail untuk projek kami.



PHP-APACHE

Kami kini boleh mula memberikan arahan mengenai bangunan dan menghubungkan bekas kami ke dalam fail-fail docker. Ini adalah fail yang menggunakan yaml sintaks. Semua definisi mesti diberikan ke dalam perkhidmatan seksyen.

Versi: '3' Perkhidmatan: PHP-APACHE: Imej: PHP: 7.2.1 -APACHE PORTS: - 80:80 Jilid: - ./Documentroot:/var/www/html pautan: - 'MariaDB' 
Salinan

Mari kita lihat apa yang baru saja kita lakukan di sini. Baris pertama yang kami masukkan ke dalam fail, versi, Menentukan apa versi sintaks docker-compose yang akan kami gunakan, dalam hal ini versi 3, Versi utama terkini tersedia. Di dalam perkhidmatan seksyen, kami mula menerangkan perkhidmatan kami dengan menentukan namanya, PHP-APACHE (nama sewenang -wenangnya, anda boleh menggunakan apa sahaja yang anda mahukan), maka arahan untuk membinanya.

The gambar Kata kunci membolehkan Docker tahu imej apa yang ingin kami gunakan untuk membina bekas kami: Dalam kes ini saya gunakan 7.2.1-APACHE yang akan memberi kami php 7.2.1 bersama dengan pelayan web Apache. Memerlukan versi PHP yang lain? anda hanya perlu memilih dari banyak yang disediakan di halaman imej di dockerHub.

Arahan kedua yang kami berikan adalah pelabuhan: kami memberitahu Docker untuk memetakan pelabuhan 80 di tuan rumah kami, ke pelabuhan 80 di bekas: cara ini akan muncul ketika kami menjalankan pelayan web secara langsung di sistem kami.

Kami kemudian menggunakan jilid arahan untuk menentukan a mengikat gunung. Oleh kerana semasa pembangunan kod berubah banyak dan cepat, tidak akan masuk akal untuk meletakkan kod secara langsung di dalam bekas: dengan cara ini kita harus membina semula setiap kali kita membuat beberapa pengubahsuaian. Sebaliknya, apa yang akan kita lakukan ialah memberitahu Docker untuk mengikat-mount Documentroot Direktori, di /var/www/html di dalam bekas. Direktori ini mewakili Apache utama Virtualhost Root dokumen, oleh itu kod yang kami masukkan ke dalamnya, akan tersedia dengan segera.

Akhirnya kami menggunakan pautan kata kunci yang dinyatakan Mariadb sebagai hujahnya. Kata kunci ini tidak diperlukan, kerana ia mungkin kelihatan, untuk mewujudkan hubungan antara kedua -dua bekas: walaupun tanpa menyatakannya, Mariadb perkhidmatan akan dapat dicapai dari dalam bekas yang dibina untuk Apache-Php perkhidmatan, dengan menggunakan namanya sebagai nama hos. Kata kunci melakukan dua perkara: pertama mari kita tentukan secara pilihan alias kita boleh gunakan untuk merujuk perkhidmatan sebagai tambahan kepada namanya. Jadi, sebagai contoh, dengan menulis:

Pautan: MariaDB: Perkhidmatan Pangkalan Data 
Salinan

Perkhidmatan ini juga dapat dihubungi menggunakan perkhidmatan pangkalan data. Perkara kedua pautan Adakah, menentukan kebergantungan: dalam hal ini PHP-APACHE perkhidmatan akan dianggap bergantung dari Mariadb satu, jadi yang terakhir akan dimulakan sebelum bekas bangunan atau memulakan persekitaran.



Pasang sambungan PHP

FP-Apache Dockerfile lalai tidak termasuk beberapa sambungan PHP, seperti mysqli atau pdo. Untuk memasangnya, kita perlu membina Dockerfile kita sendiri, berdasarkannya. Untuk melakukan itu, kami membuat direktori di dalam projek kami bernama php-apache (ini akan menjadi milik kami membina konteks) dan di dalamnya, fail docker kami. Tampal dan simpan kod di bawah sebagai PHP-APACHE/Dockerfile:

 Dari PHP: 7.2.1-APACHE PENYELIDIKAN EGIDIO JURU 
Salinan

Seperti yang anda lihat, dengan Dari Arahan, kami menyatakan bahawa fail docker ini harus berdasarkan lalai. Kemudian kami memasukkan a Jalankan Arahan: Menggunakan skrip yang disediakan dalam gambar itu sendiri, Docker-PHP-Ext-dipasang, Kami memasukkan sambungan yang diperlukan untuk menggunakan PDO dan Mysqli. Pada ketika ini, jika kita mahu menggunakan Dockerfile Custom kita, kita perlu sedikit menukar bahagian PHP-APACHE dalam Compose Docker kami.YML, dengan cara ini:

Versi: '3' Perkhidmatan: PHP-APACHE: Membina: Konteks: ./port php -apache: - 80:80 Jilid: - ./Documentroot:/var/www/html pautan: - 'MariaDB' 
Salinan

Apa yang telah berubah? Daripada secara langsung menentukan imej jauh untuk digunakan, kami menyediakan konteks arahan, di dalam membina seksyen, supaya fail docker yang terkandung dalam direktori yang kami buat dan di sini disediakan sebagai hujah, akan digunakan secara automatik. Direktori konteks diimport oleh daemon docker ketika membina imej, jadi jika kita ingin menambah fail tambahan, kita harus meletakkannya juga di sana.

Perkhidmatan pangkalan data

Pangkalan data dalam bahagian penting dalam persekitaran lampu, ia digunakan untuk kegigihan. Dalam kes ini kita akan menggunakan Mariadb:

Mariadb: Imej: Mariadb: 10.1 jilid: - MariaDB:/var/lib/mysql Alam Sekitar: TZ: "Europe/Rome" mysql_allow_empty_password: "tidak" mysql_root_password: "rootpwd" mysql_user: 'testuser' mysql_password: 'testpassword' 
Salinan

Kita sudah tahu apa yang gambar Kata kunci adalah untuk. Perkara yang sama berlaku untuk jilid arahan, kecuali hakikat bahawa kali ini kami tidak mengisytiharkan a mengikat gunung, Sebaliknya, kami merujuk a Volume bernama, untuk kegigihan. Penting untuk memberi tumpuan kepada perbezaan antara kedua -dua seketika.

Seperti yang dikatakan sebelum ini, a mengikat gunung adalah cara cepat untuk memasang direktori tuan rumah di dalam bekas, supaya fail yang terkandung dalam direktori tersebut dapat diakses dari dalam persekitaran yang terhad: untuk menentukan gunung mengikat, sintaks pendek adalah:

:

Laluan tuan rumah boleh menjadi saudara (kepada fail docker-compose) atau jalan mutlak, sementara titik gunung di dalam bekas mesti ditentukan dalam bentuk mutlak.

A Volume bernama adalah sesuatu yang berbeza: ia adalah betul Jumlah docker Digunakan untuk kegigihan, dan secara amnya lebih disukai di atas gunung mengikat, kerana ia tidak bergantung kepada struktur fail tuan rumah (salah satu daripada banyak kelebihan bekas itu). Sintaks untuk digunakan untuk merujuk a Volume bernama Di dalam definisi perkhidmatan ialah:

:

A Volume bernama kitaran hidup adalah bebas daripada bekas yang menggunakannya, dan mesti diisytiharkan di jilid Bahagian fail komposisi docker, seperti yang akan kita lihat dalam seketika.

Kembali ke definisi perkhidmatan sekarang. Kata kunci terakhir yang kami gunakan ialah persekitaran: ia membolehkan kita menetapkan beberapa pembolehubah persekitaran yang akan mempengaruhi tingkah laku perkhidmatan. Pertama kita gunakan TZ Untuk menentukan zon waktu pangkalan data kami: Dalam kes ini saya menggunakan "Eropah/Rom". Nama -nama pembolehubah lain mengatakan segala -galanya mengenai tujuan mereka: dengan menggunakannya, kami menetapkan butiran penting sebagai nama pangkalan data lalai yang akan dibuat (testdb), pengguna akan dibuat dan kata laluannya. Kami juga menetapkan kata laluan pengguna root dan memutuskan untuk tidak membenarkan kata laluan kosong.



Bahagian jilid

Dalam seksyen ini kita mesti mengisytiharkan Volume bernama Kami merujuk dari Mariadb Definisi Pelayan:

Jilid: Mariadb: 
Salinan

Pada akhirnya, ini adalah bagaimana fail kami akan kelihatan secara keseluruhannya:

Versi: '3' Perkhidmatan: PHP-APACHE: Imej: PHP: 7.2.1 -APACHE PORTS: - 80:80 Jilid: - ./Documentroot:/var/www/html: z pautan: - 'Mariadb' Mariadb: Imej: Mariadb: 10.1 jilid: - MariaDB:/var/lib/mysql Alam Sekitar: TZ: "Europe/Rome" mysql_allow_empty_password: "tidak" mysql_root_password: "rootpwd" mysql_user: 'testuser' mysql_password: 'testpassword' 
Salinan

Sangat penting untuk menghormati lekukan fail untuk ditafsirkan dengan betul.

Mari membina persekitaran kita

Sebaik sahaja kami menetapkan semua arahan untuk perkhidmatan kami, kami boleh menggunakan Docker-compose up perintah untuk membina mereka. Perintah mesti dilaksanakan di dalam direktori yang sama di mana Docker-compose.yml Fail terletak:

# Docker-compose up

Beberapa minit dan kami akan bersedia untuk pergi. Pada akhirnya jika semuanya berjalan lancar, dengan menavigasi ke localhost Pada tuan rumah kami, kami akan melihat output skrip PHP yang kami masukkan ke dalam Documentroot:

Persekitaran lampu kami kini bersedia untuk digunakan.

Pemikiran penutupan

Kami telah melihat cara membuat asas Lampu persekitaran, menggunakan docker dan kontena dan perkhidmatan yang mengatur dengan Docker-compose. Persediaan yang kami gunakan ia memberi tumpuan kepada pembangunan, dan boleh diperluaskan lagi dan tweak untuk memenuhi keperluan yang berbeza: Dokumentasi Docker Ini adalah sumber yang ditulis dengan baik yang anda boleh berunding untuk mengembangkan pengetahuan Docker anda. Jangan teragak -agak untuk meninggalkan komen untuk apa -apa keraguan atau soalan yang anda ada.

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Cara membuat timbunan lampu berasaskan Docker menggunakan Docker pada ..
  • Ubuntu 20.04 Trik dan Perkara yang Anda Tidak Tahu
  • Ubuntu 20.04 Panduan
  • Ubuntu 20.04 Hadoop
  • 8 persekitaran desktop Ubuntu terbaik (20.04 Focal Fossa ..
  • Senarai dan Pemasangan Pelanggan FTP di Ubuntu 20.04 Linux ..
  • Cara menyambung ke bekas docker melalui ssh
  • Cara memasang timbunan lampu pada almalinux