प्रौद्योगिकी साझेदारी

【Docker-compose】php वातावरणं निर्मायताम्

2024-07-12

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

डॉकर-रचना पात्र आर्केस्ट्रेशन

1. किम्

Compose इति Docker Company द्वारा प्रारब्धं एकं साधनसॉफ्टवेयरं, यत् अनुप्रयोगं निर्मातुं बहुविधं Docker पात्रं प्रबन्धयितुं शक्नोति । भवद्भिः YAML प्रारूपेण docker-compose.yml इति विन्याससञ्चिकां परिभाषितुं बहुविधपात्रयोः मध्ये आह्वानसम्बन्धान् लिखितुं च आवश्यकम् ।ततः केवलमेकेन आदेशेन एतानि पात्राणि एकस्मिन् समये आरभ्य/निवारयितुं शक्नुवन्ति

  • · Docker-Compose Docker इत्यस्य आधिकारिकः मुक्तस्रोतपरियोजना अस्ति, यः Docker कंटेनरक्लस्टरस्य द्रुतगत्या आर्केस्ट्रेशनस्य साकारीकरणाय उत्तरदायी अस्ति ।

2. त्वं किं कर्तुं शक्नोषि ?

Docker अनुशंसति यत् वयं प्रत्येकस्मिन् पात्रे केवलम् एकां सेवां चालयामः यतः docker पात्रं स्वयं अत्यल्पं संसाधनं गृह्णाति, परन्तु तदा वयं अन्यस्याः समस्यायाः सामनां कुर्मः ।

यदि मम एकस्मिन् समये बहुसेवानां परिनियोजनं करणीयम् अस्ति तर्हि प्रत्येकस्य सेवायाः कृते पृथक् Dockerfile लिखितव्यं ततः चित्रं पात्रं च निर्मातव्यं वा एतत् श्रमदायकम् अस्ति, अतः docker आधिकारिकतया अस्मान् docker-compose बहु-सेवानियोजनसाधनं प्रदाति .

उदाहरणार्थं, जालसूक्ष्मसेवापरियोजनां कार्यान्वितुं, जालसेवापात्रस्य एव अतिरिक्तं, प्रायः पृष्ठ-अन्तदत्तांशकोशं mysql सेवापात्रं, redis सर्वरं, पञ्जीकरणकेन्द्रं eureka, अपि च भारसंतुलनपात्रम् इत्यादीनि योजयितुं आवश्यकं भवति . . . . .

Compose उपयोक्तृभ्यः पृथक् docker-compose.yml टेम्पलेट् सञ्चिकायाः ​​(YAML प्रारूपस्य) माध्यमेन परियोजनारूपेण सम्बद्धानां अनुप्रयोगपात्रस्य समुच्चयं परिभाषितुं शक्नोति ।

भवान् बहु-पात्र-अनुप्रयोगं विन्याससञ्चिकायाः ​​सह सहजतया परिभाषितुं शक्नोति, ततः अनुप्रयोगस्य सर्वाणि आश्रयाणि संस्थापयितुं निर्माणं च सम्पूर्णं कर्तुं एकस्य आदेशस्य उपयोगं कर्तुं शक्नोति । Docker-Compose इत्यनेन पात्राणां प्रबन्धनं, आर्केस्ट्रा च कथं करणीयम् इति समस्यायाः समाधानं भवति ।

3. कुत्र गन्तव्यम्

  • आधिकारिकजालस्थलम् · https://docs.docker.com/compose/compose-file/compose-file-v3/
  • https://docs.docker.com/रचना/स्थापन/

त्वरितं डाउनलोड् पता

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
  • uninstall

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

4. मूलसंकल्पनानां रचना

  • Compose इत्यस्य उपयोगाय त्रीणि सोपानानि

    प्रत्येकं microservice अनुप्रयोगं परिभाषितुं तथा तत्सम्बद्धं चित्रसञ्चिकां निर्मातुं Dockerfile लिखन्तु

    सम्पूर्णं व्यावसायिक-एककं परिभाषितुं तथा समग्र-अनुप्रयोगे विविधानि कंटेनर-सेवानि व्यवस्थापयितुं 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 इत्यस्मिन् सेवा id # कंटेनर दृष्टान्तस्य अन्तः प्रविष्टं कुर्वन्तु

    docker-compose exec docker-compose.yml सञ्चिका लिखिता सेवा id /bin/bash

    docker-compose ps # docker-compose द्वारा वर्तमानकाले आर्केस्ट्रेट् कृतानि सर्वाणि चालितपात्राणि प्रदर्शयन्तु

    docker-compose top # docker-compose द्वारा आर्केस्ट्रा कृताः वर्तमानपात्रप्रक्रियाः प्रदर्शयन्तु

    docker-compose logs मध्ये service id yml # कंटेनर आउटपुट लॉग् पश्यन्तु

    docker-compose config # विन्यासस्य जाँचं कुर्वन्तु

    docker-compose config -q # समस्याः सन्ति चेत् एव विन्यासस्य निर्गमस्य च जाँचं कुर्वन्तु

    docker-compose restart # सेवां पुनः आरभत

    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. व्यावहारिकं युद्धम् : Linux मध्ये dns सर्वरं विन्यस्तं कुर्वन्तु तथा च lemp वातावरणं (Nginx + MySQL (MariaDB) + PHP) निर्मातुम्

आवश्यक

१) Linux वर्चुअल् मशीन् इत्यस्मिन् IP-सङ्केतं 192.168.90.215 इति विन्यस्यताम् (x भवतः छात्र-ID इत्यस्य अन्तिमाः ३ अङ्काः सन्ति, y स्वयमेव निर्दिष्टः अस्ति), वर्चुअल् मशीन् सामान्यतया अन्तर्जालं प्राप्तुं शक्नोति

2) DNS सर्वरं विन्यस्यताम्, डोमेन् cr.com (abc भवतः नामस्य आद्याक्षराणि सन्ति), विन्यासस्य समाप्तेः अनन्तरं, अग्रे विपर्ययस्य च संकल्पस्य सत्यापनार्थं nslookup इत्यस्य उपयोगं कुर्वन्तु;

3) LEMP (अर्थात् Nginx + MySQL (MariaDB) + PHP) विन्यस्तं कुर्वन्तु, तथा च वास्तविकहोस्ट् मार्गेण www.cr.com (abc भवतः आद्याक्षराणि सन्ति) इत्यत्र प्रवेशं कृत्वा निर्मितं LEMP अभिगन्तुं शक्नुवन्ति । (भवन्तः स्थानीयसंकल्पाय hosts सञ्चिकां परिवर्तयितुं न शक्नुवन्ति, परन्तु स्वस्य विन्यस्तं DNS उपयोक्तुं अर्हन्ति)

6. dns रिजोल्यूशन विन्यस्तं कुर्वन्तु

प्रथमं Linux कृते स्थिरं IP विन्यस्यताम् http://alleniverrui.top/archives/linux-pei-zhi-jing-tai-ip (यदि तत् उद्घाटयितुं न शक्यते तर्हि अधोलिखितं पता परिवर्तयतु)

//कर्तुं

/etc/named.conf सञ्चिकां सम्पादयन्तु

vim /etc/named.conf
  • 1

listen on तथा query मूल्यानि any इति परिवर्तयन्तु

cr.com इत्येतत् 192.168.90.215 इति समाधानार्थं dns विन्यस्यताम्

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

विम /var/नाम/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

/mydocker/lemp/ इत्यस्मिन् nginx/Dockerfile रचयन्तु ।

पूरयतु

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

/mydocker/lemp/ इत्यस्मिन् php/Dockerfile रचयन्तु ।

पूरयतु

FROM php:7.0-fpm

RUN docker-php-ext-install mysqli

 
  • 1
  • 2
  • 3
  • 4
  • 5

डॉकर पात्रेषु आर्केस्ट्रा कुर्वन्तु

 docker-compose up -d 
  • 1

पात्रस्य चालनस्थितिं द्रष्टुं Docker ps

सफलतया आरब्धम्

एतत् यन्त्रं IP मार्गेण php वातावरणं nginx वातावरणं च अभिगच्छति

अभिगमः सफलः

स्थानीय dns सर्वरं आभासीयन्त्ररूपेण विन्यस्यताम्, यत् 192.168.90.215 अस्ति

cmd विण्डो उद्घाट्य cr.com इत्यत्र ping test कुर्वन्तु

सफलतया पिंग कृतम्

डोमेननामद्वारा निर्मितं php वातावरणं प्राप्नुवन्तु

nginx विन्याससञ्चिकां परिवर्तयन्तु

अन्तिमः डोमेननाम प्रत्यक्षतया जालपुटे प्रवेशं करोति