KubOSM ile Kubernetesi CentOS 7de dağıtın
Genel Bakış Bu makale, bir Kubernetes kümesini hemen kurup kubeadm ile çalıştırmanıza yardımcı olmak içindir. Bu kılavuz iki sunucuyu
PHP uygulamaları genellikle bir web sunucusu, ilişkisel veritabanı sistemi ve dil yorumlayıcısının kendisinden oluşur. Bu derste, docker kullanarak tam bir PHP uygulama yığını kullanacağız. Bu, Nginx (web sunucusu), MySQL (veritabanı sistemi) ve PHP için kaplar oluşturacağımız ve düzenleyeceğimiz derinlemesine bir öğreticidir.
Bu öğretici uğruna, bir veritabanından şehirlerin listesini okuyan ve bir web sayfasında görüntüleyen basit bir uygulama yazacağız, bu şekilde temel, ancak çalışan bir PHP uygulaması göstereceğiz.
Bu kılavuzda, Docker-CE'nin önceden kurulu olduğu ve en azından asgari düzeyde docker bilgisi olduğu varsayılmaktadır. Bu konuda aşağıdaki eğiticileri inceleyebilirsiniz:
Gerçek bir docker tabanlı uygulama tipik olarak birkaç konteynırdan oluşur. Bunları manuel olarak yönetmek oldukça dağınık ve hantal olabilir. Docker-compose devreye giriyor. Basit bir yaml
yapılandırma dosyası aracılığıyla birkaç kapsayıcıları yönetmenize yardımcı olur .
Docker-compose uygulamasını yükleyin.
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
Bu örneğin gerekli tüm dosyalarını tutmak için bir klasör oluşturun cd
. Şu andan itibaren, bu bizim çalışma dizinimizdir ve her komut bu klasör içinde yürütülür ve her yola, ona göre başvurulur. Bu klasöre daha sonra olarak referans verilebilir WORKING_DIR
.
mkdir ~/docker
cd ~/docker
Şimdi üç klasör daha oluşturun.
mkdir php nginx app
php
Klasör bizim özel PHP görüntüsünü inşa edecek nerede olduğu nginx
klasörü bizim özel nginx görüntü için gerekli dosyaları yapacak ve app
bizim örnek uygulamanın kaynak kodunu ve yapılandırmasını koyarak olacaktır nerede klasördür.
Bu örnekte, php-fpm
Nginx web sunucusuna bağlanmak için kullanacağız . Resmi PHP temel görüntüsünü kullanacağız. Ancak, veritabanına erişebilmemiz için bazı uzantıları da yüklememiz ve etkinleştirmemiz gerekir. php
Klasörün içinde bir dosya oluşturun Dockerfile
ve aşağıdaki içerikleri bu dosyaya yerleştirin.
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
Resmi PHP görüntüsünün Alpine sürümünü kullandığımızı unutmayın. Alpine, çok daha küçük ayak izleri sağlayarak konteynerlere yönelik çok küçük bir dağıtımdır. Ayrıca, komutun kullanılmasına dikkat edin, docker-php-ext-install
resmi PHP görüntüsü, PHP uzantılarını yükleme ve yapılandırma işlemini kolaylaştırmak için bu komutu sağlar.
Şimdi, bu Docker görüntüsünü aşağıdakileri (bizim içimizde WORKING_DIR
) yayınlayarak oluşturalım :
docker build -t vultr-php php/
docker-compose.yml
dosyaDaha önce de belirtildiği gibi, docker-compose
bir dizi kapsayıcıyı basit bir yapılandırma dosyası aracılığıyla yönetmenizi sağlar. Bu yapılandırma dosyası genellikle adlandırılır docker-compose.yml
. Bu dosyayı app
klasörün içinde oluşturun .
touch app/docker-compose.yml
Şimdi aşağıdaki içeriği bu dosyaya yerleştirin.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
Bu sözdizimini açıklayacağız. İlk olarak, ilk satırı not edin.
version: '2'
Bu, docker-compose.yml
kullanılan yapılandırma dosyasının sürümünü belirtir . Bir sonraki satır, sağlanacak hizmetleri veya başka bir deyişle kapsayıcıları belirtir.
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
Her hizmetin services
blok içinde belirli bir anahtarı olduğunu unutmayın . Burada belirtilen ad, daha sonra bu özel kapsayı referans almak için kullanılacaktır. Ayrıca, php
yapılandırma içinde, kapsayıcıyı çalıştırmak için kullanılan görüntüyü tanımladığımızı unutmayın (bu daha önce oluşturduğumuz görüntüdür). Ayrıca bir hacim eşlemesi tanımlarız.
volumes:
- ./:/app
Bu docker-compose
, geçerli dizini ( ./
) /app
kabın içindeki dizine eşlemenizi söyler . Son satır /app
, kapsayıcı içindeki klasörü çalışma dizini olarak ayarlar ; bu, kapsayıcı içindeki gelecekteki tüm komutların varsayılan olarak yürütüldüğü klasör olduğu anlamına gelir.
Artık konteynırlarımızı düzenleyebiliriz.
cd ~/docker/app
docker-compose up -d
PHP kapsayıcısının yürütüldüğünden emin olmak için aşağıdaki komutu çalıştırabilirsiniz:
docker ps
Hala app
klasörün içindeyken, komutun yardımıyla tanımlı bir hizmet konteynerinin içindeki herhangi bir komutu çalıştırabiliriz docker-compose
.
docker-compose exec [service] [command]
Yer [service]
tutucu, hizmet anahtarını ifade eder. Bizim durumumuzda, bu oldu php
. PHP sürümümüzü kontrol etmek için kap içinde bir komut çalıştıralım.
docker-compose exec php php -v
Aşağıdaki çıktıyı göreceksiniz.
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
Tıpkı PHP konteyneri gibi, web sunucusu için özel bir resim oluşturmamız gerekiyor. Ancak bu durumda, bizim için bir yapılandırma sağlamalıyız virtual host
. İçimizde bulunduğunuzdan ve klasörün içinde WORKING_DIR
bir tane oluşturduğunuzdan emin olun :Dockerfile
nginx
cd ~/docker
touch nginx/Dockerfile
Şimdi aşağıdaki içeriği buna ekleyin Dockerfile
:
FROM nginx:1.13.8-alpine
COPY ./default.conf /etc/nginx/conf.d/default.conf
Alpine tabanlı varsayılan Nginx görüntüsünü kullanıyoruz. Bu Docker dosyasında bir yapılandırma dosyasını uygulama kurulumumuza kopyalarız. Bu resmi oluşturmadan önce bir yapılandırma dosyası oluşturun.
touch nginx/default.conf
Şimdi bu içerikle doldurun.
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;
}
}
fastcgi_pass php:9000
Satırda, PHP kapsayıcısına yapılandırma dosyası service
bloğunun içindeki adıyla atıfta bulunduğumuzu unutmayın docker-compose.yml
. Dahili olarak docker-compose
bir ağ oluşturur ve tanımlanan hizmetlerin her birine ana makine adı olarak hizmet adını atar. Şimdi Nginx görüntüsünü oluşturabiliriz.
docker build -t vultr-nginx nginx/
docker-compose.yml
Şimdi app/docker-compose.yml
dosyayı güncelleyin .
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
Yalnızca yeni bir hizmet ekledik. Yapılandırma aşağıdakiler dışında neredeyse aynıdır.
depends_on:
- php
ports:
- 80:80
Nginx konteynerinin tamamen başlatılması için PHP hizmetine ihtiyacı olduğunda, bu gereksinimi depends_on
seçenekte zorlarız. ports
Yapılandırma anahtarı burada port map, bir konteyner limanına ev sahibi portu eşler 80
noktasına konakta 80
kapta.
Şimdi klasörün index.php
içinde adlandırılan bir dosya oluşturun app
ve aşağıdakileri içine koyun.
<?php phpinfo();
Bağlantı noktasına 80
güvenlik duvarınızdan erişilebilir olduğundan emin olun ve aşağıdakileri yürütün.
cd ~/docker/app
docker-compose up -d
Bir kez daha, servisin çalışıp çalışmadığını bir kez daha kontrol edin.
docker ps
Bir tarayıcı açın ve erişin [vultr-instance-ip]
. Aşağıdakileri çalıştırarak Vultr örneği IP adresinizi öğrenebilirsiniz.
hostname -I
PHP bilgi sayfasını göreceksiniz.
Resmi MySQL görüntüsü, kapsayıcıyı basit ortam değişkenleri aracılığıyla yapılandırmanıza olanak tanır. Bu environment
, servis bloğu tanımının içindeki bir seçenekle yapılabilir . ~/docker/app/docker-compose.yml
Dosyayı aşağıdaki şekilde güncelleyin .
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:
Şimdi veritabanı için yeni bir hizmet tanımladık. Çizgiye dikkat edin dbdata:/var/lib/mysql
. Bu, kaptaki yolu /var/lib/mysql
Docker tarafından yönetilen kalıcı bir birime bağlar, böylece kapsayıcı kaldırıldıktan sonra veritabanı verileri devam eder. Dosyanın sonunda görebileceğiniz gibi, bu birimin üst düzey bir blokta tanımlanması gerekir.
Yeni yapılandırmamızı düzenlemeden önce örnek bir MySQL veritabanı indirelim. Resmi MySQL belgelerine bazı örnek veritabanlarını sağlar. Tanınmış dünya veritabanını kullanacağız. Bu veritabanı, ülkelerin ve şehirlerin bir listesini sağlar. Bu örneği indirmek için uygulama klasörümüzde aşağıdakileri yürütün.
curl -L http://downloads.mysql.com/docs/world.sql.gz -o world.sql.gz
gunzip world.sql.gz
Şimdi konteynırlarımızı düzenleyelim.
docker-compose up -d
Daha önce fark etmiş olabileceğiniz gibi, docker-compose up
komut yalnızca henüz başlatılmamış kapları başlatır. docker-compose.yml
Dosyanızla çalışan kapsayıcıların geçerli yapılandırması arasındaki farkları denetler .
Bir kez daha, MySQL konteynerinin başlatıldığını kontrol edin.
docker ps
Şimdi dünya veritabanını doldurun.
docker-compose exec -T mysql mysql -uroot -proot world < world.sql
Doğrudan veritabanından veri seçerek veritabanının doldurulduğunu doğrulayabilirsiniz. Önce kabın içindeki MySQL komut istemine erişin.
docker-compose exec mysql mysql -uroot -proot world
MySQL komut isteminde aşağıdakileri çalıştırın.
select * from city limit 10;
Şehirlerin bir listesini göreceksiniz. Şimdi MySQL komut isteminden çıkın.
mysql> exit
Artık tüm gerekli konteynerler çalışıyor ve çalışıyor, örnek uygulamamıza odaklanabiliriz. app/index.php
Dosyayı aşağıdaki şekilde güncelleyin .
<?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>
[vultr-instance-ip]
Bir web tarayıcısına erişirseniz , dünyanın en kalabalık şehirlerinin bir listesini görürsünüz. Tebrikler, docker kullanarak tamamen çalışan bir PHP uygulaması dağıttınız.
Bu derste, tam olarak çalışan bir PHP uygulamasını nasıl yapılandıracağımı adım adım gösterdim. PHP ve Nginx için özel görüntüler oluşturduk ve docker-compose'u konteynerlerimizi düzenlemek için yapılandırdık. Çok basit ve basit olmasına rağmen, bu kurulum gerçek bir yaşam senaryosunu yansıtır.
Bu kılavuzda, görüntülerimizi yerel olarak oluşturduk ve etiketledik. Daha esnek bir kurulum için, bu görüntüleri bir docker kayıt defterine gönderebilirsiniz . Resmi liman işçisi kayıt defterine geçebilir, hatta kendi liman işçisi kayıt defterinizi bile oluşturabilirsiniz. Her durumda, bu, görüntülerinizi bir ana bilgisayarda oluşturmanıza ve başka bir bilgisayarda kullanmanıza olanak tanır.
Ürününün daha ayrıntılı kullanımı docker-compose
için resmi belgelere başvurmalısınız .
Uygulama gereksinimlerinize ve kullandığınız PHP çerçevesine bağlı olarak, daha fazla uzantı eklemek isteyebilirsiniz. Bu, Dockerfile
özel PHP imajımızı oluşturmak için kullanılanı değiştirerek kolayca yapılabilir . Ancak, bazı uzantıların kapsayıcıya yüklenmesi için ek bağımlılıklara gereksinimi vardır. Her bir uzantının temel gereksinimlerini gözden geçirmek için PHP resmi belgelerindeki uzantı listesine başvurmalısınız .
Genel Bakış Bu makale, bir Kubernetes kümesini hemen kurup kubeadm ile çalıştırmanıza yardımcı olmak içindir. Bu kılavuz iki sunucuyu
Rancher OS, Docker etrafında inşa edilmiş çok hafif bir Linux dağıtımıdır. İşletim sisteminin kendisi yaklaşık 20 MB ağırlığında. Bu eğitici ile birlikte çalışmaya başlayacaksınız
Giriş Docker, kapsayıcı olarak çalıştırılan programları dağıtmamızı sağlayan bir uygulamadır. Popüler Go programlama dilinde yazılmıştır
Giriş Bu kılavuz, birden fazla Alpine Linux 3.9.0 sunucusu ve Portainer kullanarak bir Docker sürüsü oluşturmayı ve yapılandırmayı gösterecektir. Lütfen unutmayın
Farklı Bir Sistem mi Kullanıyorsunuz? Docker, sanal kapsayıcılara yazılım dağıtımına izin veren bir uygulamadır. Go programında yazıldı
Harbor, Docker görüntülerini depolayan ve dağıtan açık kaynaklı, kurumsal sınıf bir kayıt defteri sunucusudur. Liman, açık kaynaklı Docker Dağıtımını genişletiyor b
Bu makalede, docker-composeun CoreOSa nasıl yükleneceği açıklanmaktadır. CoreOSta / usr / klasörü değiştirilemez, bu nedenle standart / usr / local / bin yolu kullanılamaz.
Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Rancher, konteynerleri çalıştırmak ve özel bir konteyner servisi oluşturmak için açık kaynaklı bir platformdur. Çiftlik temelidir
Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Rancher, konteynerleri çalıştırmak ve özel bir konteyner servisi oluşturmak için açık kaynaklı bir platformdur. Çiftlik temelidir
Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Docker Swarm, bireysel sunucularınızı bir bilgisayar kümesine dönüştürür; ölçeklendirme, yüksek kullanılabilirlik ve
Vultr Docker uygulamasının yardımıyla Dockerı Vultr sunucu örneğinize kolayca dağıtabilirsiniz. Bu arada, Docker yönetim görevini kolaylaştırabilirsiniz
Hepimiz uygulama kaplarını birden çok makineye oluşturmak, yönetmek ve dağıtmak için bir platform olan Dockerı biliyoruz ve seviyoruz. Docker Inc.
Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Sentry, hata izleme için açık kaynaklı bir çözümdür. Nöbetçi istisnaları ve diğer yararlı mesajları izler
Genel Bakış RancherOS, sistem hizmetlerini çalıştırmak için bir Docker arka plan programı PID 0 olarak çalıştıran inanılmaz derecede hafif bir işletim sistemidir (yalnızca yaklaşık 60 MB).
Farklı Bir Sistem mi Kullanıyorsunuz? Giriş Docker Swarm, bireysel sunucularınızı bir bilgisayar kümesine dönüştürerek ölçeklendirmeyi, yüksek kullanılabilirliği ve
Bu eğitimde Dockerı kullanmaya başlamanın temelleri açıklanmaktadır. Dockerın kurulu olduğunu varsayıyorum. Bu öğreticideki adımlar,
Bir web uygulaması çalıştırırken, yazılımınızı çoklu iş parçacığını kullanmak için dönüştürmek zorunda kalmadan normalde kaynaklarınızdan en iyi şekilde yararlanmak istersiniz.
Önkoşullar Docker motoru 1.8+. Minimum 4GB disk alanı. Minimum 4GB RAM. Adım 1. Dockerı yükleyin SQL-Serverı yüklemek için Docker mus
Bu makalede, Düğüm uygulamanızı bir Docker kapsayıcısında nasıl dağıtacağınız gösterilecektir. Not: Bu eğiticide Dockerın yüklü ve okunmuş olduğu varsayılmaktadır
26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.
Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.
Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.
Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.
CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?
Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.
Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!
Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.
Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun