Terapkan Kubernetes Dengan Kubeadm di CentOS 7
Gambaran Keseluruhan Artikel ini dimaksudkan untuk membantu anda mendapatkan cluster Kubernet dan berjalan dengan kubeadm dalam waktu singkat. Panduan ini akan menggunakan dua pelayan, di
Aplikasi PHP biasanya dibuat oleh webserver, sistem pangkalan data relasional dan interpreter bahasa itu sendiri. Dalam tutorial ini, kami akan memanfaatkan stack aplikasi PHP penuh menggunakan docker. Ini adalah tutorial mendalam di mana kita akan membina dan mengarang bekas untuk Nginx (webserver), MySQL (sistem pangkalan data) dan PHP.
Demi tutorial ini, kami akan menulis aplikasi mudah yang membaca senarai kota dari pangkalan data dan memaparkannya di laman web, dengan cara ini kami akan menunjukkan aplikasi PHP yang asas tetapi berfungsi.
Panduan ini mengandaikan bahawa anda mempunyai Docker-CE yang telah dipasang dan sekurang-kurangnya pengetahuan kerja minimum docker. Untuk perkara itu, anda boleh menyemak tutorial berikut:
Aplikasi berasaskan docker sebenarnya akan terdiri daripada beberapa bekas. Menguruskan secara manual dengan mudah boleh menjadi agak kemas dan rumit. Itulah tempat penyusun docker bermain. Ia membantu anda menguruskan beberapa bekas melalui yaml
fail konfigurasi yang mudah .
Pasang penyusun docker.
curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Buat folder untuk menyimpan semua fail yang diperlukan dari contoh ini dan kemudian cd
ke dalamnya. Mulai sekarang, ini adalah direktori kerja kami dan setiap arahan akan dilaksanakan di dalam folder ini dan setiap laluan akan dirujuk berbanding dengannya. Folder ini boleh dirujuk kemudian sebagai WORKING_DIR
.
mkdir ~/docker
cd ~/docker
Sekarang buat tiga lagi folder.
mkdir php nginx app
The php
folder adalah di mana kita akan membina imej PHP adat kami, nginx
folder akan mengadakan fail yang diperlukan untuk imej nginx adat kami dan app
folder adalah di mana kita akan meletakkan kod sumber dan konfigurasi aplikasi sampel kami.
Dalam contoh ini, kita akan gunakan php-fpm
untuk menyambung ke webserver Nginx. Kami akan menggunakan imej asas PHP rasmi. Walau bagaimanapun, kami juga perlu memasang dan mendayakan beberapa sambungan supaya kami boleh mengakses pangkalan data. Di dalam php
folder buat fail bernama Dockerfile
dan masukkan isi berikut ke dalamnya.
FROM php:7.1-fpm-alpine3.4
RUN apk update --no-cache \
&& apk add --no-cache $PHPIZE_DEPS \
&& apk add --no-cache mysql-dev \
&& docker-php-ext-install pdo pdo_mysql
Perhatikan bahawa kami menggunakan versi Alpine imej rasmi PHP. Alpine adalah sebaran yang sangat kecil yang disasarkan ke kontena dengan memberikan jejak kaki yang jauh lebih kecil. Juga, perhatikan penggunaan arahan itu docker-php-ext-install
, imej rasmi PHP memberikan arahan ini untuk memudahkan proses memasang dan mengkonfigurasi pelanjutan PHP.
Sekarang, mari kita bina gambar Docker ini dengan mengeluarkan yang berikut (di dalam kami WORKING_DIR
):
docker build -t vultr-php php/
docker-compose.yml
failSeperti yang telah disebutkan, docker-compose
membolehkan anda menguruskan beberapa bekas melalui fail konfigurasi yang mudah. Fail konfigurasi ini biasanya dinamakan docker-compose.yml
. Buat fail ini di dalam app
folder.
touch app/docker-compose.yml
Sekarang masukkan kandungan berikut ke dalam fail ini.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
Kami akan menerangkan sintaks ini. Pertama, perhatikan baris pertama.
version: '2'
Ini menentukan versi docker-compose.yml
fail konfigurasi yang digunakan. Baris seterusnya menentukan perkhidmatan, atau dengan kata lain, bekas yang akan disediakan.
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
Perhatikan bahawa setiap perkhidmatan mempunyai kunci tertentu di dalam services
blok. Nama yang dinyatakan di sini akan digunakan untuk merujuk bekas khusus ini kemudian. Juga ambil perhatian bahawa di dalam php
konfigurasi, kami menentukan imej yang digunakan untuk menjalankan bekas (ini adalah imej yang kami bina sebelum ini). Kami juga menentukan pemetaan kelantangan.
volumes:
- ./:/app
Ini memberitahu docker-compose
peta direktori semasa ( ./
) ke /app
direktori di dalam bekas. Baris terakhir menetapkan /app
folder di dalam wadah sebagai direktori yang berfungsi, yang bermaksud bahawa ini adalah folder di mana semua perintah masa depan di dalam bekas secara lalai dijalankan dari.
Kami sekarang boleh mengatur bekas kami.
cd ~/docker/app
docker-compose up -d
Anda boleh menjalankan perintah berikut untuk memastikan bahawa wadah PHP telah dijalankan:
docker ps
Masih di dalam app
folder, kita boleh menjalankan sebarang arahan di dalam bekas perkhidmatan yang ditentukan dengan bantuan docker-compose
perintah itu.
docker-compose exec [service] [command]
Pemegang [service]
tempat merujuk kepada kunci perkhidmatan. Dalam kes kami, ini adalah php
. Mari jalankan arahan di dalam bekas untuk memeriksa versi PHP kami.
docker-compose exec php php -v
Anda akan melihat output berikut.
PHP 7.1.14 (cli) (built: Feb 7 2018 00:40:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
Sama seperti bekas PHP, kita perlu membuat gambar khusus untuk pelayan laman web. Tetapi dalam kes ini, kita hanya perlu menyediakan konfigurasi untuk kita virtual host
. Pastikan anda berada di dalam kami WORKING_DIR
dan buat folder Dockerfile
di dalam nginx
:
cd ~/docker
touch nginx/Dockerfile
Sekarang masukkan kandungan berikut ke dalam ini Dockerfile
:
FROM nginx:1.13.8-alpine
COPY ./default.conf /etc/nginx/conf.d/default.conf
Kami menggunakan imej Nginx lalai berdasarkan Alpine. Pada fail Docker ini kami hanya menyalin fail konfigurasi ke dalam penyediaan aplikasi kami. Sebelum membina gambar ini, buat fail konfigurasi.
touch nginx/default.conf
Sekarang isi dengan kandungan ini.
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /app;
index index.php;
#server_name server_domain_or_IP;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Perhatikan bahawa pada fastcgi_pass php:9000
baris kami merujuk kepada bekas PHP dengan nama itu di dalam service
blok docker-compose.yml
fail konfigurasi. Secara dalaman docker-compose
membuat rangkaian dan memberikan nama perkhidmatan sebagai nama host untuk setiap perkhidmatan yang ditentukan. Kita sekarang boleh membina imej Nginx.
docker build -t vultr-nginx nginx/
docker-compose.yml
Sekarang kemas kini app/docker-compose.yml
fail.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
Kami hanya menambah perkhidmatan baru. Konfigurasi hampir sama, kecuali yang berikut.
depends_on:
- php
ports:
- 80:80
Apabila bekas Nginx memerlukan perkhidmatan PHP untuk dimulakan sepenuhnya, kami memaksa keperluan ini dalam depends_on
pilihan. Yang ports
utama konfigurasi maps port tuan rumah kepada pelabuhan kontena, di sini kita map pelabuhan 80
dalam tuan rumah ke pelabuhan 80
dalam bekas.
Sekarang buat fail yang dipanggil index.php
di dalam app
folder dan masukkan yang berikut di dalamnya.
<?php phpinfo();
Pastikan port 80
boleh diakses melalui firewall anda dan laksanakan perkara berikut.
cd ~/docker/app
docker-compose up -d
Sekali lagi, semak semula perkhidmatan itu.
docker ps
Buka penyemak imbas dan akses [vultr-instance-ip]
. Anda mungkin mengetahui alamat IP contoh Vultr anda dengan menjalankan yang berikut.
hostname -I
Anda akan melihat halaman maklumat PHP.
Imej MySQL rasmi membolehkan anda mengkonfigurasi bekas melalui pemboleh ubah persekitaran mudah. Ini boleh dilakukan dengan environment
pilihan dalam definisi blok perkhidmatan. Kemas kini ~/docker/app/docker-compose.yml
fail ke yang berikut.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
mysql:
image: mysql:5.7.21
volumes:
- ./:/app
- dbdata:/var/lib/mysql
environment:
- MYSQL_DATABASE=world
- MYSQL_ROOT_PASSWORD=root
working_dir: /app
volumes:
dbdata:
Sekarang kami telah menentukan perkhidmatan baru untuk pangkalan data. Perhatikan garis dbdata:/var/lib/mysql
. Ini menaikkan jalan pada wadah /var/lib/mysql
ke kelantangan berterusan yang dikendalikan oleh Docker, dengan cara ini data pangkalan data berterusan setelah wadah dikeluarkan. Jilid ini perlu ditentukan dalam blok tingkat atas seperti yang anda dapat lihat di akhir fail.
Sebelum mengatur konfigurasi baru kami, mari memuat turun contoh pangkalan data MySQL. The dokumentasi MySQL rasmi menyediakan beberapa pangkalan data sampel. Kami akan menggunakan pangkalan data dunia yang terkenal. Pangkalan data ini menyediakan senarai negara dan bandar. Untuk memuat turun sampel ini, jalankan perkara berikut di dalam folder aplikasi kami.
curl -L http://downloads.mysql.com/docs/world.sql.gz -o world.sql.gz
gunzip world.sql.gz
Sekarang mari kita mengatur bekas kami.
docker-compose up -d
Seperti yang telah anda perhatikan, docker-compose up
arahan itu hanya bermula dengan bekas yang belum dimulakan. Ia memeriksa perbezaan antara docker-compose.yml
fail anda dan konfigurasi bekas yang sedang berjalan.
Sekali lagi, periksa bahawa bekas MySQL telah dimulakan.
docker ps
Kini mengisi pangkalan data dunia.
docker-compose exec -T mysql mysql -uroot -proot world < world.sql
Anda boleh mengesahkan bahawa pangkalan data diisi dengan memilih data secara langsung dari pangkalan data. Akses terlebih dahulu petikan MySQL di dalam bekas.
docker-compose exec mysql mysql -uroot -proot world
Dalam prompt MySQL, jalankan yang berikut.
select * from city limit 10;
Anda akan melihat senarai bandar-bandar. Sekarang tutup arahan MySQL.
mysql> exit
Sekarang bahawa semua bekas yang diperlukan dan berjalan, kita boleh memberi tumpuan kepada permohonan sampel kami. Kemas kini app/index.php
fail ke yang berikut.
<?php
$pdo = new PDO('mysql:host=mysql;dbname=world;charset=utf8', 'root', 'root');
$stmt = $pdo->prepare("
select city.Name, city.District, country.Name as Country, city.Population
from city
left join country on city.CountryCode = country.Code
order by Population desc
limit 10
");
$stmt->execute();
$cities = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Vultr Rocks!</title>
</head>
<body>
<h2>Most Populous Cities In The World</h2>
<table>
<thead>
<tr>
<th>Name</th>
<th>Country</th>
<th>District</th>
<th>Population</th>
</tr>
</thead>
<tbody>
<?php foreach($cities as $city): ?>
<tr>
<td><?=$city['Name']?></td>
<td><?=$city['Country']?></td>
<td><?=$city['District']?></td>
<td><?=number_format($city['Population'], 0)?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</body>
</html>
Jika anda mengakses [vultr-instance-ip]
dalam penyemak imbas web, anda akan melihat senarai bandar yang paling ramai penduduk di dunia. Tahniah, anda telah menggunakan aplikasi PHP yang berfungsi sepenuhnya menggunakan docker.
Dalam tutorial ini, saya telah menunjukkan langkah demi langkah bagaimana mengkonfigurasi aplikasi PHP yang berfungsi sepenuhnya. Kami membina imej tersuai untuk PHP dan Nginx, dan dikonfigurasikan docker-compose untuk mengaturkan bekas kami. Walaupun sangat asas dan sederhana, persediaan ini mencerminkan senario kehidupan sebenar.
Dalam panduan ini, kami telah membina dan menandakan imej kami secara tempatan. Untuk persediaan yang lebih fleksibel, anda boleh menolak imej-imej ini ke registry docker . Anda boleh menolak ke pendaftaran docker rasmi atau juga membuat pendaftaran docker anda sendiri. Walau apa pun, ini akan membolehkan anda membina gambar anda pada satu host dan menggunakannya pada yang lain.
Untuk penggunaan yang lebih terperinci docker-compose
, anda harus merujuk kepada dokumentasi rasmi .
Bergantung pada keperluan aplikasi anda dan kerangka PHP yang anda gunakan, anda mungkin ingin menambahkan lebih banyak sambungan. Ini dapat dilakukan dengan mudah dengan mengubah suai yang Dockerfile
digunakan untuk membina gambar PHP tersuai kami. Walau bagaimanapun, sesetengah pelanjutan memerlukan lebih banyak dependensi untuk dipasang di dalam bekas. Anda harus merujuk pada senarai peluasan dalam dokumentasi rasmi PHP untuk mengkaji keperluan asas setiap peluasan.
Gambaran Keseluruhan Artikel ini dimaksudkan untuk membantu anda mendapatkan cluster Kubernet dan berjalan dengan kubeadm dalam waktu singkat. Panduan ini akan menggunakan dua pelayan, di
Pengenalan Docker adalah aplikasi yang memungkinkan kita menyebarkan program yang dijalankan sebagai wadah. Ia ditulis dalam bahasa pengaturcaraan Go yang popular
Pendahuluan Panduan ini akan menunjukkan kepada anda cara membuat dan mengkonfigurasi kawanan Docker menggunakan beberapa pelayan Alpine Linux 3.9.0 dan Portainer. Harap maklum tha
Menggunakan Sistem Berbeza? Pengenalan Rancher adalah platform sumber terbuka untuk menjalankan kontena dan membina perkhidmatan kontena peribadi. Rancher adalah asas
Artikel ini menerangkan cara memasang docker-compose pada CoreOS. Di CoreOS, folder / usr / tidak berubah sehingga jalan standard / usr / local / bin tidak tersedia
Kita semua tahu dan menyukai Docker, platform untuk membuat, mengurus dan mengedarkan bekas aplikasi di pelbagai mesin. Docker Inc. menyediakan perkhidmatan t
Menggunakan Sistem Berbeza? Pengenalan Rancher adalah platform sumber terbuka untuk menjalankan kontena dan membina perkhidmatan kontena peribadi. Rancher adalah asas
Menggunakan Sistem Berbeza? Pengenalan Docker Swarm menukarkan pelayan individu anda ke dalam kumpulan komputer, memudahkan scaling, ketersediaan tinggi
Menggunakan Sistem yang berbeza? Docker adalah aplikasi yang memungkinkan penggunaan perisian dalam wadah maya. Ia ditulis dalam program Go
Gambaran Keseluruhan RancherOS adalah sistem operasi yang sangat ringan (hanya sekitar 60 MB) yang menjalankan sistem Docker daemon sebagai PID 0 untuk menjalankan sistem perkhidmatan
Menggunakan Sistem Berbeza? Pengenalan Docker Swarm menukarkan pelayan individu anda ke dalam kumpulan komputer; memudahkan penskalaan, ketersediaan tinggi dan
Tutorial ini menerangkan asas-asas untuk memulakan Docker. Saya menganggap bahawa anda sudah memasang Docker. Langkah-langkah dalam tutorial ini akan berfungsi pada
Semasa menjalankan aplikasi web, biasanya anda ingin memanfaatkan sepenuhnya sumber anda tanpa perlu menukar perisian anda untuk menggunakan multithreading o
Prasyarat enjin Docker 1.8+. Minimum ruang cakera 4GB. Minimum RAM 4GB. Langkah 1. Pasang Docker Untuk memasang SQL-Server, Docker mus
Menggunakan Sistem Berbeza? Pengenalan Docker adalah aplikasi yang memungkinkan penggunaan perisian dalam wadah maya. Ia ditulis dalam G
Menggunakan Sistem yang berbeza? Docker adalah aplikasi yang memungkinkan untuk menyebarkan program yang dijalankan sebagai wadah. Ia ditulis dalam program Go yang popular
Artikel ini akan menunjukkan kepada anda cara menyebarkan aplikasi Node anda dalam wadah Docker. Catatan: Tutorial ini mengandaikan bahawa anda telah memasang dan membaca Docker
Menggunakan Sistem Berbeza? Pengenalan Sentry adalah penyelesaian sumber terbuka untuk pengesanan ralat. Sentry menjejaki pengecualian dan mesej berguna lain dari sana
Harbour adalah pelayan pendaftaran kelas perusahaan sumber terbuka yang menyimpan dan menyebarkan gambar Docker. Harbour memperluas sumber terbuka Docker Distribution b
Rancher OS adalah sebaran Linux yang sangat ringan yang dibina di sekitar Docker. OS itu sendiri mempunyai berat sekitar 20MB. Tutorial ini akan membuatkan anda dapat menggunakannya
Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1
Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.
Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.
Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.
Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.
CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?
Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.
Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!
Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.
Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut