Berbagi teknologi

【Docker-compose】Bangun lingkungan php

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Orkestrasi container penulisan Docker

1. Apa itu

Compose adalah perangkat lunak alat yang diluncurkan oleh Docker Company, yang dapat mengelola beberapa container Docker untuk membentuk sebuah aplikasi. Anda perlu mendefinisikan file konfigurasi docker-compose.yml dalam format YAML dan menulis hubungan panggilan antara beberapa container.Kemudian, hanya dengan satu perintah, Anda dapat memulai/menghentikan container ini secara bersamaan

  • · Docker-Compose adalah proyek open source resmi Docker, yang bertanggung jawab untuk mewujudkan orkestrasi cepat cluster container Docker.

2. Apa yang bisa kamu lakukan?

Docker merekomendasikan agar kita hanya menjalankan satu layanan di setiap container. Karena container docker itu sendiri hanya menggunakan sedikit sumber daya, yang terbaik adalah memisahkan setiap layanan secara terpisah. Namun kemudian kita menghadapi masalah lain?

Jika saya perlu menerapkan beberapa layanan pada saat yang sama, apakah saya harus menulis Dockerfile terpisah untuk setiap layanan dan kemudian membangun image dan container? Ini melelahkan, jadi buruh pelabuhan secara resmi memberi kita alat penerapan multi-layanan penulisan buruh pelabuhan .

Misalnya, untuk mengimplementasikan proyek layanan mikro Web, selain kontainer layanan Web itu sendiri, sering kali perlu menambahkan kontainer layanan mysql database back-end, server redis, pusat registrasi eureka, dan bahkan kontainer penyeimbang beban, dll. . . . . .

Compose memungkinkan pengguna untuk menentukan sekumpulan container aplikasi terkait sebagai proyek melalui file template docker-compose.yml terpisah (format YAML).

Anda dapat dengan mudah mendefinisikan aplikasi multi-kontainer dengan file konfigurasi, lalu menggunakan satu perintah untuk menginstal semua dependensi aplikasi dan menyelesaikan pembangunan. Docker-Compose memecahkan masalah bagaimana mengelola dan mengatur container.

3. Ke mana harus pergi

  • Situs web resmi · https://docs.docker.com/compose/compose-file/compose-file-v3/
  • https://docs.docker.com/compose/instal/

Alamat pengunduhan yang dipercepat

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  • 1

Tambahkan izin yang dapat dieksekusi

chmod +x /usr/local/bin/docker-compose
  • 1

Periksa apakah instalasi berhasil

docker-compose --version
  • 1
  • hapus instalan

    sudo rm / usr/ local/ bin/docker-compose
    
    • 1

4. Menyusun konsep inti

  • Tiga langkah untuk menggunakan Compose

    Tulis Dockerfile untuk mendefinisikan setiap aplikasi layanan mikro dan membuat file gambar yang sesuai

    Gunakan docker-compose.yml untuk mendefinisikan unit bisnis lengkap dan mengatur berbagai layanan kontainer di keseluruhan aplikasi.

    Terakhir, jalankan perintah docker-compose up untuk memulai dan menjalankan seluruh aplikasi untuk menyelesaikan penerapan satu klik dan online.

  • Buat perintah umum

    docker-compose -h # Lihat bantuan

    docker-compose up # Mulai semua layanan docker-compose

    docker-compose up -d # Mulai semua layanan docker-compose dan jalankan di latar belakang

    docker-compose down # Hentikan dan hapus container, jaringan, volume, dan gambar.

    Id layanan di docker-compose exec yml # Masuk ke dalam instance container

    docker-compose exec docker-compose.yml file tertulis id layanan /bin/bash

    docker-compose ps # Menampilkan semua container yang sedang berjalan yang saat ini diatur oleh docker-compose

    docker-compose top # Menampilkan proses container saat ini yang diatur oleh docker-compose

    Id layanan di log penulisan buruh pelabuhan yml # Lihat log keluaran kontainer

    konfigurasi docker-compose # Periksa konfigurasi

    docker-compose config -q # Periksa konfigurasi dan output hanya jika ada masalah

    docker-compose restart # Mulai ulang layanan

    mulai pembuatan buruh pelabuhan # Mulai layanan

    docker-compose stop # Hentikan layanan

instalasi perintah mesin buruh pelabuhan

 base=https://get.daocloud.io/docker/machine/releases/download/v0.14.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo install /tmp/docker-machine /usr/local/bin/docker-machine
  • 1
  • 2
  • 3

5. Pertarungan praktis: konfigurasikan server dns di Linux dan bangun lingkungan lemp (Nginx + MySQL (MariaDB) + PHP)

Memerlukan

1) Di mesin virtual Linux, konfigurasikan alamat IP ke 192.168.90.215 (x adalah 3 digit terakhir ID pelajar Anda, y ditentukan sendiri), dan mesin virtual dapat mengakses Internet secara normal;

2) Konfigurasikan server DNS, domainnya adalah cr.com (abc adalah inisial nama Anda), setelah konfigurasi selesai, gunakan nslookup untuk memverifikasi resolusi maju dan mundur;

3) Konfigurasikan LEMP (yaitu Nginx + MySQL (MariaDB) + PHP), dan akses www.cr.com (abc adalah inisial Anda) melalui host sebenarnya untuk mengakses LEMP yang dibangun. (Anda tidak dapat mengubah file host untuk resolusi lokal, tetapi harus menggunakan DNS Anda sendiri yang dikonfigurasi)

6. Konfigurasikan resolusi dns

Konfigurasikan terlebih dahulu IP statis untuk Linux http://alleniverrui.top/archives/linux-pei-zhi-jing-tai-ip (jika tidak bisa dibuka, ubah alamat di bawah)

//melakukan

Edit berkas /etc/named.conf

vim /etc/named.conf
  • 1

Ubah nilai pendengaran dan kueri menjadi apa saja

Konfigurasikan dns untuk menyelesaikan cr.com ke 192.168.90.215

vim /etc/named.rfc1912.zones 
  • 1

Tambahkan di akhir file

zone "cr.com" IN {
   type master;
   file "cr.com.zone";
  allow-update { none; };
};
zone "215.90.168.192.in-addr.arpa" IN {
        type master;
        file "com.cr.loop";
        allow-update { none; };
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

:wq untuk menyimpan

Edit file konfigurasi yang sesuai vim /var/named/com.cr.loop

Tambahkan yang berikut ini

$TTL 1D
@       IN SOA  cr.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
        PTR     cr.com.
        NS      ns.cr.com.
ns      A       192.168.90.215
201     PTR     www.cr.com.
201     PTR     email.cr.com.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Sunting vim /var/named/cr.com.zone

Tambahkan yang berikut ini

$TTL 1D
@       IN SOA  cr.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.90.215
        AAAA    ::1
        NS      ns.server.com.
ns      IN A    192.168.90.215
www     IN A    192.168.90.215
email   IN A    192.168.90.215
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Mulai ulang DNS

systemctl restart named
  • 1

Lihat status DNS

systemctl status named
  • 1

Dimulai dengan sukses

Meneruskan penguraian nslookup cr.com

Penguraian terbalik nslookup 192.168.90.215

Konfigurasikan lemp

Tulis file docker-compose.yml ke /mydocker/lemp

vim /mydocker/lemp/docker-compose.yml isi konten berikut

nginx:
    build: ./nginx/
    ports:
        - 80:80
    links:
        - php
    volumes_from:
        - app

php:
    build: ./php/
    expose:
        - 9000
    links:
        - mysql
    volumes_from:
        - app

app:
    image: php:7.0-fpm
    volumes:
        - .:/var/www/html
    command: "true"

mysql:
    image: mysql:latest
    volumes_from:
        - data
    environment:
        MYSQL_ROOT_PASSWORD: secret
        MYSQL_DATABASE: bookmarks
        MYSQL_USER: cr
        MYSQL_PASSWORD: cr123

data:
    image: mysql:latest
    volumes:
        - /var/lib/mysql
    command: "true"

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
        - 8080:80
    links:
        - mysql
    environment:
        PMA_HOST: mysql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

Buat nginx/Dockerfile di /mydocker/lemp/

mengisi

FROM nginx:latest

COPY ./default.conf /etc/nginx/conf.d/default.conf
  • 1
  • 2
  • 3

Buat default.conf

Isi konten berikut

 

server {

  listen 80 default_server;

  root /var/www/html;

  index index.html index.php;

 

  charset utf-8;

 

  location / {

try_files $uri $uri/ /index.php?$query_string;

  }

 

  location = /favicon.ico { access_log off; log_not_found off; }

  location = /robots.txt  { access_log off; log_not_found off; }

 

  access_log off;

  error_log  /var/log/nginx/error.log error;

 

  sendfile off;

 

  client_max_body_size 100m;

 

  location ~ .php$ {

  fastcgi_split_path_info ^(.+.php)(/.+)$;

  fastcgi_pass php:9000;

 fastcgi_index index.php;

 include fastcgi_params;

 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_intercept_errors off;

fastcgi_buffer_size 16k;

 fastcgi_buffers 4 16k;

  }

 

  location ~ /.ht {

 deny all;

  }

}

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75

Buat php/Dockerfile di /mydocker/lemp/

mengisi

FROM php:7.0-fpm

RUN docker-php-ext-install mysqli

 
  • 1
  • 2
  • 3
  • 4
  • 5

Mengatur kontainer buruh pelabuhan

 docker-compose up -d 
  • 1

Docker ps untuk melihat status container berjalan

Berhasil dimulai

Mesin ini mengakses lingkungan php dan lingkungan nginx melalui IP

Akses berhasil

Konfigurasikan server dns lokal sebagai mesin virtual, yaitu 192.168.90.215

Buka jendela cmd dan lakukan tes ping di cr.com

Berhasil melakukan ping

Akses lingkungan php yang dibangun melalui nama domain

Ubah file konfigurasi nginx

Nama domain akhir langsung mengakses situs web