GNU/Linux >> Belajar Linux >  >> Ubuntu

Dockerizing LEMP Stack dengan Docker-Compose di Ubuntu

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


Ubuntu
  1. Cara Menginstal WordPress dengan Docker di Ubuntu

  2. Cara Menginstal WordPress dengan LEMP Stack di Ubuntu 18.04

  3. Cara Menginstal Magento 2.4 dengan LEMP Stack di Ubuntu 20.04

  1. Menginstal tumpukan LEMP di Ubuntu 14.04

  2. Dockerizing Wordpress dengan Nginx dan PHP-FPM di Ubuntu 16.04

  3. Cara menginstal ONLYOFFICE 8.9.0 dengan Docker di Ubuntu

  1. Dockerizing Laravel dengan Nginx MySQL dan Docker Compose di Ubuntu 18.04 LTS

  2. Cara Instal Nginx dengan PHP dan MySQL (LEMP Stack) di Ubuntu 18.04

  3. Cara Menginstal Nginx dengan PHP dan MySQL (LEMP Stack) di Ubuntu 20.04 LTS