Cara membuat timbunan lampu berasaskan docker menggunakan docker-compose di Ubuntu 18.04 Bionic Beaver Linux
- 1465
- 396
- Clarence Tromp
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 menggunakansudo
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
- « Cara memasang Discord di Ubuntu 18.04 Bionic Beaver Linux
- Cara menetapkan semula kata laluan mysql root pada ubuntu 18.04 Bionic Beaver Linux »