Tulisan Docker adalah alat baris perintah untuk mendefinisikan dan mengelola aplikasi buruh pelabuhan multi-kontainer. Compose adalah skrip python, dapat diinstal dengan perintah pip dengan mudah (pip adalah perintah untuk menginstal perangkat lunak Python dari repositori paket python). Dengan compose, kita dapat menjalankan beberapa kontainer buruh pelabuhan dengan satu perintah. Ini memungkinkan Anda membuat wadah sebagai layanan, bagus untuk lingkungan pengembangan, pengujian, dan pementasan Anda.
Dalam tutorial ini, saya akan memandu Anda langkah demi langkah menggunakan docker-compose untuk membuat lingkungan LEMP Stack (LEMP =Linux - Nginx - MySQL - PHP). Kami akan menjalankan semua komponen dalam wadah Docker yang berbeda, kami menyiapkan wadah Nginx, wadah PHP, wadah PHPMyAdmin, dan wadah MySQL/MariaDB.
Prasyarat
- Server Ubuntu 16.04 -64bit
- Hak istimewa root
Langkah 1 - Instal Docker
Pada langkah ini, kita akan menginstal Docker. Docker tersedia di repositori Ubuntu, cukup perbarui repositori Anda lalu instal.
Perbarui repositori ubuntu dan tingkatkan:
sudo apt-get update
sudo apt-get upgrade
Instal Docker terbaru dari repositori ubuntu.
sudo apt-get install -y docker.io
Mulai buruh pelabuhan dan aktifkan untuk memulai saat boot:
systemctl start docker
systemctl enable docker
Layanan Docker sedang berjalan.
Selanjutnya, Anda dapat mencoba menggunakan buruh pelabuhan dengan perintah di bawah ini untuk mengujinya:
docker run hello-world
Halo dunia dari buruh pelabuhan.
Langkah 2 - Instal Docker-Compose
Pada langkah pertama, kita sudah menginstal Docker. Sekarang kita akan menginstal docker-compose.
Kita membutuhkan python-pip untuk instalasi compose, install python dan python-pip dengan apt:
sudo apt-get install -y python python-pip
Ketika instalasi selesai, instal docker-compose dengan perintah pip.
pip install docker-compose
Sekarang periksa versi docker-compose:
docker-compose --version
Docker-compose telah diinstal.
Langkah 3 - Buat dan Konfigurasikan Lingkungan Docker
Pada langkah ini, kita akan membangun lingkungan docker-compose kita. Kami akan menggunakan pengguna non-root, jadi kami perlu membuat pengguna itu sekarang.
Tambahkan pengguna baru bernama 'hakase ' (pilih nama pengguna Anda sendiri di sini jika Anda mau):
useradd -m -s /bin/bash hakase
passwd hakase
Selanjutnya, tambahkan pengguna baru ke 'docker ' grup dan mulai ulang buruh pelabuhan.
usermod -a -G docker hakase
sudo systemctl restart docker
Sekarang pengguna 'hakase ' dapat menggunakan buruh pelabuhan tanpa sudo.
Selanjutnya, dari user root, login ke user 'hakase' dengan su.
su - hakase
Buat direktori baru untuk lingkungan penulisan.
mkdir lemp-compose/
cd lemp-compose/
Ini adalah lingkungan komposisi buruh pelabuhan kami, semua file yang akan ada di wadah Docker harus ada di direktori ini. Saat kita menggunakan docker-compose, kita membutuhkan file .yml bernama 'docker-compose.yml '.
Di direktori 'lemp-compose', buat beberapa direktori baru dan file docker-compose.yml:
touch docker-compose.yml
mkdir -p {logs,nginx,public,db-data}
- log :Direktori untuk file log Nginx.
- nginx :berisi konfigurasi Nginx seperti virtual host dll.
- publik :direktori untuk file web, index.html, dan file info PHP.
- data-db :volume direktori data MariaDB.
Buat file log error.log dan access.log di 'log ' direktori.
touch logs/{error,access}.log
Buat file konfigurasi host virtual nginx baru di 'nginx ' direktori:
vim nginx/app.conf
Tempelkan konfigurasi di bawah ini:
upstream php {
server phpfpm:9000;
}
server {
server_name 193.70.36.50;
error_log "/opt/bitnami/nginx/logs/myapp-error.log";
access_log "/opt/bitnami/nginx/logs/myapp-access.log";
root /myapps;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
Simpan file dan keluar dari vim.
Buat file index.html baru dan file info PHP di 'publik ' direktori.
echo '<h1>LEMP Docker-Compose</h1><p><b>hakase-labs</b>' > public/index.html
echo '<?php phpinfo(); ?>' > public/info.php
Sekarang Anda dapat melihat direktori lingkungan seperti yang ditunjukkan di bawah ini:
tree
Langkah 4 - Konfigurasi file docker-compose.yml
Pada langkah sebelumnya, kita telah membuat direktori dan file yang dibutuhkan untuk container kita. Pada langkah ini, kita ingin mengedit file 'docker-compose.yml '. Dalam file docker-compose.yml, kami akan mendefinisikan layanan kami untuk tumpukan LEMP, gambar dasar untuk setiap wadah, dan volume buruh pelabuhan.
Masuk ke 'hakase ' pengguna dan edit docker-compose.yml file dengan vim:
su - hakase
cd lemp-compose/
vim docker-compose.yml
- Tentukan layanan Nginx
Tempelkan konfigurasi nginx di bawah ini:
nginx:
image: 'bitnami/nginx'
ports:
- '80:80'
links:
- phpfpm
volumes:
- ./logs/access.log:/opt/bitnami/nginx/logs/myapp-access.log
- ./logs/error.log:/opt/bitnami/nginx/logs/myapp-error.log
- ./nginx/app.conf:/bitnami/nginx/conf/vhosts/app.conf
- ./public:/myapps
Dalam konfigurasi itu, kita telah mendefinisikan:
- nginx :nama layanan
- gambar :kami menggunakan 'bitnami/nginx ' gambar buruh pelabuhan
- port :mengekspos pelabuhan kontainer 80 ke port host 80
- tautan :tautan 'nginx ' wadah layanan ke 'phpfpm ' wadah
- volume :pasang direktori lokal ke wadah. Pasang direktori file log, pasang konfigurasi virtual host Nginx dan pasang direktori root web.
- Menentukan layanan PHP-fpm
Tempel konfigurasi di bawah blok Nginx:
phpfpm:
image: 'bitnami/php-fpm'
ports:
- '9000:9000'
volumes:
- ./public:/myapps
Kami mendefinisikan di sini:
- phpfpm :menentukan nama layanan.
- gambar :tentukan gambar dasar untuk layanan phpfpm dengan 'bitnami/php-fpm ' gambar.
- port :Kami menjalankan PHP-fpm dengan port TCP 9000 dan memperlihatkan port 9000 kepada tuan rumah.
- volume :pasang direktori root web 'publik ' ke 'aplikasi saya ' di wadah.
- Tentukan layanan MySQL
Di blok ketiga, rekatkan konfigurasi di bawah ini untuk wadah layanan MariaDB:
mysql:
image: 'mariadb'
ports:
- '3306:3306'
volumes:
- ./db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=hakase-labs123
Di sini Anda dapat melihat bahwa kami menggunakan:
- mysql :sebagai nama layanan.
- gambar :wadah didasarkan pada 'mariadb ' gambar buruh pelabuhan.
- port :wadah layanan menggunakan port 3306 untuk koneksi MySQL, dan ekspos ke host pada port 3306 .
- volume :data-db direktori mysql
- lingkungan :setel variabel lingkungan 'MYSQL_ROOT_PASSWORD ' untuk kata sandi root mysql ke gambar buruh pelabuhan, dieksekusi saat membangun wadah.
- Konfigurasi layanan PHPMyAdmin
Blok terakhir, paste konfigurasi di bawah ini:
phpmyadmin:
image: 'phpmyadmin/phpmyadmin'
restart: always
ports:
- '8080:80'
links:
- mysql:mysql
environment:
MYSQL_USERNAME: root
MYSQL_ROOT_PASSWORD: hakase-labs123
PMA_HOST: mysql
Kami menggunakan gambar buruh pelabuhan 'phpmyadmin', memetakan port container 80 ke 8080 di host, tautkan penampung ke mariadb container, setel restart selalu dan setel beberapa variabel lingkungan dari gambar buruh pelabuhan, termasuk set 'PMA_HOST '.
Simpan file dan keluar dari vim.
Anda dapat melihat contoh lengkapnya di github.
Langkah 5 - Jalankan Docker-Compose
Sekarang kita siap untuk menjalankan docker-compose. Catatan:saat ingin menjalankan docker-compose, Anda harus berada di direktori project docker-compose dan pastikan ada file yml dengan konfigurasi compose.
Jalankan perintah di bawah ini untuk memutar tumpukan LEMP:
docker-compose up -d
-d: berjalan sebagai daemon atau latar belakang
Anda akan melihat hasil bahwa wadah baru telah dibuat, periksa dengan perintah di bawah ini:
docker-compose ps
Sekarang kami memiliki empat container yang menjalankan Nginx, PHP-fpm, MariaDB, dan PHPMyAdmin.
Langkah 6 - Pengujian
Memeriksa port yang digunakan oleh docker-proxy di host.
netstat -plntu
Kita bisa melihat port 80 untuk container Nginx, port 3306 untuk container MariaDB, port 9000 untuk container php-fpm, dan port 8080 untuk container PHPMyAdmin.
Akses port 80 dari browser web, dan Anda akan melihat file index.html kami.
http://serverip-address/
Pastikan PHP-fpm berjalan, akses dari browser web.
http://serverip-address/info.php
Akses wadah MySQL di shell MySQL.
docker-compose exec mysql bash
mysql -u root -p
TYPE MYSQL PASSWORD: hakase-labs123
Sekarang buat database baru:
create database hakase_db;
exit
Wadah shell mysql MariaDB dapat diakses, dan kami telah membuat database baru 'hakase_db '.
Selanjutnya, akses PHPMyAdmin pada port 8080:http://serverip-address:8080/.
Anda akan melihat halaman login PHPMyAdmin, ketik saja nama pengguna 'root ' dan sandinya adalah 'hakase-labs123 '.
Anda akan secara otomatis terhubung ke wadah mysql yang telah ditentukan di PMA_HOST variabel lingkungan.
Klik 'Pergi ' dan Anda akan melihat dashboard phpmyadmin yang terhubung ke 'mysql ' wadah.
Kesuksesan! LEMP Stack berjalan di bawah setup docker-compose, terdiri dari empat container.
Referensi
https://hub.docker.com/r/bitnami/nginx/
https://hub.docker.com/r/bitnami/php-fpm/
https://hub.docker.com/_/mariadb/
https://hub.docker.com/r/phpmyadmin/phpmyadmin/
https://docs.docker.com/compose/
https://github.com/yuzukiseo/hakase-labs/tree/master/lemp-compose