டோக்கர் கம்போஸ்: மேம்பாட்டிலிருந்து உற்பத்தி வரை

பாடத்தின் தொடக்கத்தை எதிர்பார்த்து தயாரிக்கப்பட்ட போட்காஸ்ட் டிரான்ஸ்கிரிப்ஷனின் மொழிபெயர்ப்பு "லினக்ஸ் நிர்வாகி"

டோக்கர் கம்போஸ்: மேம்பாட்டிலிருந்து உற்பத்தி வரை

டோக்கர் கம்போஸ் ஒரு வேலையை உருவாக்குவதற்கான ஒரு அற்புதமான கருவியாகும்
உங்கள் பயன்பாட்டில் பயன்படுத்தப்படும் அடுக்கிற்கான சூழல். இது உங்களை வரையறுக்க அனுமதிக்கிறது
உங்கள் பயன்பாட்டின் ஒவ்வொரு கூறுகளும், தெளிவான மற்றும் எளிமையான தொடரியலைப் பின்பற்றுகின்றன YAML-
கோப்புகள்
.

வருகையுடன் டோக்கர் கம்போஸ் v3 இந்த YAML கோப்புகள் வேலை செய்யும் போது உற்பத்தி சூழலில் நேரடியாகப் பயன்படுத்தப்படலாம்
கொத்து டோக்கர் திரள்.

ஆனால் அதே டாக்கர்-கம்போஸ் கோப்பை நீங்கள் பயன்படுத்தலாம் என்று இது அர்த்தப்படுத்துகிறதா?
வளர்ச்சி செயல்முறை மற்றும் உற்பத்தி சூழலில்? அல்லது அதே கோப்பைப் பயன்படுத்தவும்
அரங்கேற்றம்? சரி, பொதுவாக, ஆம், ஆனால் இந்த செயல்பாட்டிற்கு நமக்கு பின்வருபவை தேவை:

  • மாறி இடைச்செருகல்: சிலருக்கு சூழல் மாறிகளைப் பயன்படுத்துதல்
    ஒவ்வொரு சூழலிலும் மாறும் மதிப்புகள்.
  • உள்ளமைவு மேலெழுதல்: ஒரு வினாடியை வரையறுக்கும் திறன் (அல்லது ஏதேனும்
    மற்றொரு அடுத்தடுத்த) docker-compose கோப்பு இது தொடர்பாக ஏதாவது மாற்றப்படும்
    முதலில், இரண்டு கோப்புகளையும் ஒன்றிணைப்பதை டோக்கர் கம்போஸ் கவனித்துக் கொள்ளும்.

மேம்பாடு மற்றும் உற்பத்தி கோப்புகளுக்கு இடையிலான வேறுபாடுகள்

வளர்ச்சியின் போது, ​​குறியீட்டு மாற்றங்களை நீங்கள் பெரும்பாலும் சரிபார்க்க வேண்டும்
உண்மையான நேரம். இதைச் செய்ய, வழக்கமாக மூலக் குறியீட்டைக் கொண்ட தொகுதி ஏற்றப்படும்
உங்கள் பயன்பாட்டிற்கான இயக்க நேரத்தைக் கொண்டிருக்கும் கொள்கலன். ஆனால் உற்பத்தி சூழலுக்கு
இந்த முறை பொருத்தமானது அல்ல.

உற்பத்தியில், உங்களிடம் பல முனைகளுடன் ஒரு கிளஸ்டர் உள்ளது, மற்றும் தொகுதி உள்ளூர்
உங்கள் கொள்கலன் (அல்லது சேவை) இயங்கும் முனையுடன் தொடர்புடையது, எனவே நீங்கள் செய்யவில்லை
சிக்கலான செயல்பாடுகள் இல்லாமல் மூலக் குறியீட்டை ஏற்றலாம்
குறியீடு ஒத்திசைவு, சமிக்ஞைகள் போன்றவை.

அதற்கு பதிலாக, நாங்கள் வழக்கமாக உங்கள் குறியீட்டின் குறிப்பிட்ட பதிப்பைக் கொண்டு ஒரு படத்தை உருவாக்க விரும்புகிறோம்.
அதை பொருத்தமான குறிச்சொல்லுடன் குறிப்பது வழக்கம் (நீங்கள் சொற்பொருள் பயன்படுத்தலாம்
பதிப்பு அல்லது வேறு அமைப்பு உங்கள் விருப்பப்படி).

உள்ளமைவு மேலெழுதுதல்

வேறுபாடுகள் மற்றும் உங்கள் சார்புகள் சூழ்நிலைகளில் வேறுபடலாம்
மேம்பாடு மற்றும் உற்பத்தி, நமக்கு வெவ்வேறு கட்டமைப்பு கோப்புகள் தேவைப்படும் என்பது தெளிவாகிறது.

டோக்கர் கம்போஸ் வெவ்வேறு கம்போஸ் கோப்புகளை ஒன்றிணைப்பதை ஆதரிக்கிறது
இறுதி அமைப்பைப் பெறுங்கள். இது எவ்வாறு செயல்படுகிறது என்பதை எடுத்துக்காட்டில் காணலாம்:

$ cat docker-compose.yml
version: "3.2"

services:
  whale:
    image: docker/whalesay
    command: ["cowsay", "hello!"]
$ docker-compose up
Creating network "composeconfigs_default" with the default driver
Starting composeconfigs_whale_1
Attaching to composeconfigs_whale_1
whale_1  |  ________
whale_1  | < hello! >
whale_1  |  --------
whale_1  |     
whale_1  |      
whale_1  |       
whale_1  |                     ##        .
whale_1  |               ## ## ##       ==
whale_1  |            ## ## ## ##      ===
whale_1  |        /""""""""""""""""___/ ===
whale_1  |   ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
whale_1  |        ______ o          __/
whale_1  |                     __/
whale_1  |           __________/
composeconfigs_whale_1 exited with code 0

சொன்னது போல், டோக்கர் கம்போஸ் பல கம்போஸ்களை இணைத்து ஆதரிக்கிறது -
கோப்புகள், இது இரண்டாவது கோப்பில் பல்வேறு அளவுருக்களை மேலெழுத அனுமதிக்கிறது. உதாரணத்திற்கு:

$ cat docker-compose.second.yml
version: "3.2"
services:
  whale:
    command: ["cowsay", "bye!"]

$ docker-compose -f docker-compose.yml -f docker-compose.second.yml up
Creating composeconfigs_whale_1
Attaching to composeconfigs_whale_1
whale_1  |  ______
whale_1  | < bye! >
whale_1  |  ------
whale_1  |     
whale_1  |      
whale_1  |       
whale_1  |                     ##        .
whale_1  |               ## ## ##       ==
whale_1  |            ## ## ## ##      ===
whale_1  |        /""""""""""""""""___/ ===
whale_1  |   ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
whale_1  |        ______ o          __/
whale_1  |                     __/
whale_1  |           __________/
composeconfigs_whale_1 exited with code 0

இந்த தொடரியல் வளர்ச்சியின் போது மிகவும் வசதியாக இல்லை, கட்டளை போது
பல முறை செய்ய வேண்டும்.

அதிர்ஷ்டவசமாக, டாக்கர் கம்போஸ் தானாகவே ஒரு சிறப்பு கோப்பைத் தேடுகிறது
docker-compose.override.yml மதிப்புகளை மீறுவதற்கு கூலியாள்-compose.yml. என்றால்
இரண்டாவது கோப்பை மறுபெயரிடுங்கள், அசல் கட்டளையைப் பயன்படுத்தி மட்டுமே அதே முடிவைப் பெறுவீர்கள்:

$ mv docker-compose.second.yml docker-compose.override.yml
$ docker-compose up
Starting composeconfigs_whale_1
Attaching to composeconfigs_whale_1
whale_1  |  ______
whale_1  | < bye! >
whale_1  |  ------
whale_1  |     
whale_1  |      
whale_1  |       
whale_1  |                     ##        .
whale_1  |               ## ## ##       ==
whale_1  |            ## ## ## ##      ===
whale_1  |        /""""""""""""""""___/ ===
whale_1  |   ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
whale_1  |        ______ o          __/
whale_1  |                     __/
whale_1  |           __________/
composeconfigs_whale_1 exited with code 0

சரி, நினைவில் கொள்வது எளிது.

மாறிகளின் இடைக்கணிப்பு

கட்டமைப்பு கோப்புகள் ஆதரவு இடைச்செருகல்
மாறிகள்
மற்றும் இயல்புநிலை மதிப்புகள். அதாவது, நீங்கள் பின்வருவனவற்றைச் செய்யலாம்:

services:
  my-service:
    build:
      context: .
    image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
...

நீங்கள் செய்தால் docker-compose build (அல்லது புஷ்) சூழல் மாறி இல்லாமல்
$MY_SERVICE_VERSION, மதிப்பு பயன்படுத்தப்படும் சமீபத்தியஆனால் நீங்கள் அமைத்தால்
கட்டுவதற்கு முன் சுற்றுச்சூழல் மாறியின் மதிப்பு, கட்டும் போது அல்லது தள்ளும் போது பயன்படுத்தப்படும்
பதிவுக்கு private.registry.mine.

எனது கொள்கைகள்

எனக்கு வேலை செய்யும் அணுகுமுறைகள் உங்களுக்கும் வேலை செய்யலாம். இவற்றை நான் பின்பற்றுகிறேன்
எளிய விதிகள்:

  • உற்பத்தி, மேம்பாடு (அல்லது பிற சூழல்கள்) ஆகியவற்றிற்கான எனது அனைத்து அடுக்குகளும் வரையறுக்கப்பட்டுள்ளன
    docker-compose கோப்புகள்
  • முடிந்தவரை எனது எல்லாச் சூழல்களையும் மறைப்பதற்கு உள்ளமைவு கோப்புகள் தேவை
    நகல் தவிர்க்கவும்.
  • ஒவ்வொரு சூழலிலும் வேலை செய்ய எனக்கு ஒரு எளிய கட்டளை தேவை.
  • முக்கிய கட்டமைப்பு கோப்பில் வரையறுக்கப்பட்டுள்ளது கூலியாள்-compose.yml.
  • சுற்றுச்சூழல் மாறிகள் படக் குறிச்சொற்கள் அல்லது பிறவற்றை வரையறுக்கப் பயன்படுத்தப்படுகின்றன
    சுற்றுச்சூழலுக்கு சூழல் மாறுபடும் மாறிகள் (நிலைப்படுத்தல், ஒருங்கிணைப்பு,
    உற்பத்தி).
  • உற்பத்தி மாறிகளின் மதிப்புகள் மதிப்புகளாகப் பயன்படுத்தப்படுகின்றன
    முன்னிருப்பாக, ஸ்டாக் இல்லாமல் உற்பத்தியில் தொடங்கப்பட்டால் இது அபாயங்களைக் குறைக்கிறது
    சூழல் மாறியை அமைக்கவும்.
  • உற்பத்தி சூழலில் சேவையைத் தொடங்க, கட்டளையைப் பயன்படுத்தவும் docker stack deploy - Compose-file docker-compose.yml -with-registry-auth my-stack-name.
  • பணிச்சூழல் கட்டளையைப் பயன்படுத்தி தொடங்கப்பட்டது docker- உருவாக்கும் வரை -d.

ஒரு எளிய உதாரணத்தைப் பார்ப்போம்.

# docker-compose.yml
...
services:
  my-service:
    build:
      context: .
    image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
    environment:
      API_ENDPOINT: ${API_ENDPOINT:-https://production.my-api.com}
...

И

# docker-compose.override.yml
...
services:
  my-service:
    ports: # This is needed for development!
      - 80:80
    environment:
      API_ENDPOINT: https://devel.my-api.com
    volumes:
      - ./:/project/src
...

நான் பயன்படுத்த முடியும் docker-compose (docker-compose up)ஸ்டாக்கை இயக்க
மூல குறியீடு பொருத்தப்பட்ட வளர்ச்சி முறை /திட்டம்/எஸ்ஆர்சி.

தயாரிப்பில் இதே கோப்புகளை என்னால் பயன்படுத்த முடியும்! மற்றும் நான் நிச்சயமாக பயன்படுத்த முடியும்
அதே கோப்பு கூலியாள்-compose.yml அரங்கேற்றத்திற்காக. இதை விரிவுபடுத்த
தயாரிப்பு, நான் முன் வரையறுக்கப்பட்ட குறிச்சொல்லுடன் படத்தை உருவாக்கி அனுப்ப வேண்டும்
CI கட்டத்தில்:

export MY_SERVICE_VERSION=1.2.3
docker-compose -f docker-compose.yml build
docker-compose -f docker-compose.yml push

உற்பத்தியில், பின்வரும் கட்டளைகளைப் பயன்படுத்தி இதை இயக்கலாம்:

export MY_SERVICE_VERSION=1.2.3
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth

நீங்கள் மேடையில் அதையே செய்ய விரும்பினால், நீங்கள் வரையறுக்க வேண்டும்
ஸ்டேஜிங் சூழலில் பணிபுரிய தேவையான சூழல் மாறிகள்:

export MY_SERVICE_VERSION=1.2.3
export API_ENDPOINT=http://staging.my-api.com
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth

இதன் விளைவாக, நாங்கள் இரண்டு வெவ்வேறு டோக்கர்-கம்போஸ் கோப்புகளைப் பயன்படுத்தினோம், அவை இல்லாமல்
உங்களிடம் உள்ள எந்த சூழலுக்கும் நகல் உள்ளமைவுகள் பயன்படுத்தப்படலாம்!

பாடத்திட்டத்தைப் பற்றி மேலும் அறிக "லினக்ஸ் நிர்வாகி"

ஆதாரம்: www.habr.com

கருத்தைச் சேர்