Κοινή χρήση τεχνολογίας

【Docker-compose】Δημιουργήστε ένα περιβάλλον php

2024-07-12

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

Docker-compose ενορχήστρωση κοντέινερ

1. Τι είναι

Το Compose είναι ένα λογισμικό εργαλείο που κυκλοφόρησε από την Docker Company, το οποίο μπορεί να διαχειριστεί πολλαπλά κοντέινερ Docker για να σχηματίσει μια εφαρμογή. Πρέπει να ορίσετε ένα αρχείο διαμόρφωσης docker-compose.yml σε μορφή YAML και να γράψετε τις σχέσεις κλήσης μεταξύ πολλών κοντέινερ.Στη συνέχεια, με μία μόνο εντολή, μπορείτε να ξεκινήσετε/σταματήσετε αυτά τα κοντέινερ ταυτόχρονα

  • · Το Docker-Compose είναι το επίσημο έργο ανοιχτού κώδικα του Docker, υπεύθυνο για την υλοποίηση της ταχείας ενορχήστρωσης των συστάδων εμπορευματοκιβωτίων Docker.

2. Τι μπορείτε να κάνετε;

Ο Docker συνιστά να εκτελούμε μόνο μία υπηρεσία σε κάθε κοντέινερ Επειδή το ίδιο το κοντέινερ καταλαμβάνει πολύ λίγους πόρους, είναι καλύτερο να διαχωρίσουμε κάθε υπηρεσία ξεχωριστά.

Εάν χρειάζεται να αναπτύξω πολλές υπηρεσίες ταυτόχρονα, πρέπει να γράψω ένα ξεχωριστό αρχείο Docker για κάθε υπηρεσία και στη συνέχεια να δημιουργήσω την εικόνα και το κοντέινερ. .

Για παράδειγμα, για την υλοποίηση ενός έργου microservice Ιστού, εκτός από το ίδιο το κοντέινερ της υπηρεσίας Web, είναι συχνά απαραίτητο να προστεθεί το back-end βάση δεδομένων mysql service container, ο διακομιστής redis, το κέντρο εγγραφής eureka, ακόμη και τα κοντέινερ εξισορρόπησης φορτίου κ.λπ. . . . . .

Το Compose επιτρέπει στους χρήστες να ορίσουν ένα σύνολο συσχετισμένων κοντέινερ εφαρμογών ως έργο μέσω ενός ξεχωριστού αρχείου προτύπου docker-compose.yml (μορφή YAML).

Μπορείτε εύκολα να ορίσετε μια εφαρμογή πολλαπλών κοντέινερ με ένα αρχείο διαμόρφωσης και, στη συνέχεια, να χρησιμοποιήσετε μια μεμονωμένη εντολή για να εγκαταστήσετε όλες τις εξαρτήσεις της εφαρμογής και να ολοκληρώσετε τη δημιουργία. Το Docker-Compose λύνει το πρόβλημα του τρόπου διαχείρισης και ενορχήστρωσης κοντέινερ.

3. Πού να πάτε

  • Επίσημος ιστότοπος · https://docs.docker.com/compose/compose-file/compose-file-v3/
  • https://docs.docker.com/compose/install/

Διεύθυνση ταχείας λήψης

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

Προσθήκη εκτελέσιμων δικαιωμάτων

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

Ελέγξτε εάν η εγκατάσταση είναι επιτυχής

docker-compose --version
  • 1
  • απεγκατάσταση

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

4. Συνθέστε βασικές έννοιες

  • Τρία βήματα για να χρησιμοποιήσετε το Compose

    Γράψτε το Dockerfile για να ορίσετε κάθε εφαρμογή microservice και να δημιουργήσετε το αντίστοιχο αρχείο εικόνας

    Χρησιμοποιήστε το docker-compose.yml για να ορίσετε μια πλήρη επιχειρηματική μονάδα και να οργανώσετε διάφορες υπηρεσίες κοντέινερ στη συνολική εφαρμογή.

    Τέλος, εκτελέστε την εντολή docker-compose up για να ξεκινήσετε και να εκτελέσετε ολόκληρη την εφαρμογή για να ολοκληρώσετε την ανάπτυξη με ένα κλικ και να συνδεθείτε στο διαδίκτυο.

  • Σύνταξη κοινών εντολών

    docker-compose -h # Προβολή βοήθειας

    docker-compose up # Εκκίνηση όλων των υπηρεσιών docker-compose

    docker-compose up -d # Ξεκινήστε όλες τις υπηρεσίες docker-compose και εκτελέστε τις στο παρασκήνιο

    docker-compose down # Διακοπή και διαγραφή κοντέινερ, δικτύων, τόμων και εικόνων.

    Το αναγνωριστικό υπηρεσίας στο docker-compose exec yml # Εισαγάγετε μέσα στην παρουσία του κοντέινερ

    docker-compose exec docker-compose.yml αρχείο γραπτής ταυτότητας υπηρεσίας /bin/bash

    docker-compose ps # Εμφάνιση όλων των εκτελούμενων κοντέινερ που ενορχηστρώνονται αυτήν τη στιγμή από το docker-compose

    docker-compose top # Εμφάνιση των τρεχουσών διεργασιών κοντέινερ που ενορχηστρώνονται από το docker-compose

    Αναγνωριστικό υπηρεσίας στα αρχεία καταγραφής docker-compose yml # Προβολή αρχείου καταγραφής εξόδου κοντέινερ

    docker-compose config # Ελέγξτε τη διαμόρφωση

    docker-compose config -q # Ελέγξτε τη διαμόρφωση και την έξοδο μόνο εάν υπάρχουν προβλήματα

    επανεκκίνηση docker-compose # Επανεκκινήστε την υπηρεσία

    docker-compose start # Εκκίνηση της υπηρεσίας

    docker-compose stop # Διακοπή της υπηρεσίας

εγκατάσταση εντολών docker-machine

 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. Πρακτική μάχη: διαμορφώστε τον διακομιστή dns σε Linux και δημιουργήστε lemp περιβάλλον (Nginx + MySQL (MariaDB) + PHP)

Απαιτώ

1) Στην εικονική μηχανή Linux, ρυθμίστε τη διεύθυνση IP σε 192.168.90.215 (x είναι τα 3 τελευταία ψηφία του φοιτητικού σας ID, το y καθορίζεται από εσάς) και η εικονική μηχανή μπορεί να έχει πρόσβαση στο Διαδίκτυο κανονικά.

2) Διαμορφώστε τον διακομιστή DNS, ο τομέας είναι cr.com (abc είναι τα αρχικά του ονόματός σας), αφού ολοκληρωθεί η διαμόρφωση, χρησιμοποιήστε το nslookup για να επαληθεύσετε την ανάλυση προς τα εμπρός και προς τα πίσω.

3) Διαμορφώστε το LEMP (δηλαδή Nginx + MySQL (MariaDB) + PHP) και αποκτήστε πρόσβαση στο www.cr.com (το abc είναι τα αρχικά σας) μέσω του πραγματικού κεντρικού υπολογιστή για πρόσβαση στο ενσωματωμένο LEMP. (Δεν μπορείτε να τροποποιήσετε το αρχείο hosts για τοπική ανάλυση, αλλά πρέπει να χρησιμοποιήσετε το δικό σας διαμορφωμένο DNS)

6. Διαμορφώστε την ανάλυση dns

Πρώτα διαμορφώστε τη στατική IP για Linux http://alleniverrui.top/archives/linux-pei-zhi-jing-tai-ip (αν δεν μπορεί να ανοίξει, αλλάξτε τη διεύθυνση παρακάτω)

//να κάνω

Επεξεργαστείτε το αρχείο /etc/named.conf

vim /etc/named.conf
  • 1

Αλλάξτε τις τιμές ακρόασης και ερωτήματος σε οποιαδήποτε

Διαμόρφωση dns για επίλυση του cr.com στο 192.168.90.215

vim /etc/named.rfc1912.zones 
  • 1

Προσθέστε στο τέλος του αρχείου

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 για αποθήκευση

Επεξεργαστείτε το αντίστοιχο αρχείο διαμόρφωσης vim /var/named/com.cr.loop

Προσθέστε τα παρακάτω

$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

Επεξεργαστείτε το vim /var/named/cr.com.zone

Προσθέστε τα παρακάτω

$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

Επανεκκινήστε το dns

systemctl restart named
  • 1

Προβολή κατάστασης dns

systemctl status named
  • 1

Ξεκίνησε με επιτυχία

Προώθηση ανάλυσης nslookup cr.com

Αντίστροφη ανάλυση nslookup 192.168.90.215

Ρύθμιση παραμέτρων lemp

Γράψτε το αρχείο docker-compose.yml στο /mydocker/lemp

vim /mydocker/lemp/docker-compose.yml συμπληρώστε το παρακάτω περιεχόμενο

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

Δημιουργία nginx/Dockerfile στο /mydocker/lemp/

συμπληρώνω

FROM nginx:latest

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

Δημιουργία default.conf

Συμπληρώστε το παρακάτω περιεχόμενο

 

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

Δημιουργία php/Dockerfile στο /mydocker/lemp/

συμπληρώνω

FROM php:7.0-fpm

RUN docker-php-ext-install mysqli

 
  • 1
  • 2
  • 3
  • 4
  • 5

Ενορχηστρώστε τα κοντέινερ docker

 docker-compose up -d 
  • 1

Docker ps για να δείτε την κατάσταση λειτουργίας του κοντέινερ

Ξεκίνησε με επιτυχία

Αυτό το μηχάνημα έχει πρόσβαση στο περιβάλλον php και στο περιβάλλον nginx μέσω IP

Επιτυχής πρόσβαση

Διαμορφώστε τον τοπικό διακομιστή dns ως εικονική μηχανή, ο οποίος είναι 192.168.90.215

Ανοίξτε το παράθυρο cmd και εκτελέστε μια δοκιμή ping στο cr.com

Έγινε επιτυχής ping

Πρόσβαση στο ενσωματωμένο περιβάλλον php μέσω ονόματος τομέα

Τροποποιήστε το αρχείο διαμόρφωσης nginx

Το τελικό όνομα τομέα έχει απευθείας πρόσβαση στον ιστότοπο