ඩොකර් රචනා: සංවර්ධනයේ සිට නිෂ්පාදනය දක්වා

පාඨමාලාවේ ආරම්භය අපේක්ෂාවෙන් සකස් කරන ලද පොඩ්කාස්ට් පිටපතෙහි පරිවර්තනය "ලිනක්ස් පරිපාලක"

ඩොකර් රචනා: සංවර්ධනයේ සිට නිෂ්පාදනය දක්වා

Docker Compose යනු කාර්යයක් නිර්මාණය කිරීම සඳහා පුදුමාකාර මෙවලමකි
ඔබගේ යෙදුමේ භාවිතා කරන තොගය සඳහා පරිසරය. එය ඔබට නිර්වචනය කිරීමට ඉඩ සලසයි
ඔබගේ යෙදුමේ සෑම අංගයක්ම, පැහැදිලි සහ සරල වාක්‍ය ඛණ්ඩයක් අනුගමනය කරමින් YAML-
ගොනු
.

පැමිණීමත් සමග ඩොකර් රචනා v3 මෙම YAML ගොනු සමඟ වැඩ කරන විට නිෂ්පාදන පරිසරය තුළ සෘජුවම භාවිතා කළ හැක
පොකුර ඩෝකර් රංචුව.

නමුත් මෙයින් අදහස් කරන්නේ ඔබට එකම docker-compose ගොනුව භාවිතා කළ හැකි බවයි
සංවර්ධන ක්රියාවලිය සහ නිෂ්පාදන පරිසරය තුළ? නැතහොත් එකම ගොනුව භාවිතා කරන්න
වේදිකාගත කරනවාද? හොඳයි, පොදුවේ, ඔව්, නමුත් මෙම ක්‍රියාකාරිත්වය සඳහා අපට පහත සඳහන් දෑ අවශ්‍ය වේ:

  • විචල්‍ය මැදිහත්වීම: සමහරක් සඳහා පරිසර විචල්‍යයන් භාවිතා කිරීම
    එක් එක් පරිසරය තුළ වෙනස් වන අගයන්.
  • වින්‍යාසය ප්‍රතික්ෂේප කිරීම: තත්පරයක් (හෝ ඕනෑම එකක්) අර්ථ දැක්වීමේ හැකියාව
    තවත් පසුකාලීන) docker-compose ගොනුවක් සම්බන්ධයෙන් යමක් වෙනස් කරයි
    පළමුව, ගොනු දෙකම ඒකාබද්ධ කිරීම docker compose විසින් බලා ගනී.

සංවර්ධන සහ නිෂ්පාදන ගොනු අතර වෙනස්කම්

සංවර්ධනය අතරතුර, ඔබට බොහෝ විට කේත වෙනස්වීම් පරීක්ෂා කිරීමට අවශ්‍ය වනු ඇත
තත්ය කාලය. මෙය සිදු කිරීම සඳහා, සාමාන්යයෙන් මූලාශ්ර කේතය සමඟ පරිමාව සවි කර ඇත
ඔබගේ යෙදුම සඳහා ධාවන කාලය අඩංගු කන්ටේනරය. නමුත් නිෂ්පාදන පරිසරයක් සඳහා
මෙම ක්රමය සුදුසු නොවේ.

නිෂ්පාදනයේදී, ඔබට බොහෝ නෝඩ් සහිත පොකුරක් ඇති අතර, පරිමාව දේශීය වේ
ඔබගේ කන්ටේනරය (හෝ සේවාව) ක්‍රියාත්මක වන නෝඩයට සාපේක්ෂව, එසේ නොවේ
ඔබට සංකීර්ණ මෙහෙයුම් වලින් තොරව මූල කේතය සවි කළ හැක
කේත සමමුහුර්තකරණය, සංඥා, ආදිය.

ඒ වෙනුවට, අපට සාමාන්‍යයෙන් අවශ්‍ය වන්නේ ඔබේ කේතයේ නිශ්චිත අනුවාදයක් සහිත රූපයක් නිර්මාණය කිරීමයි.
සුදුසු ටැගය සමඟ එය සලකුණු කිරීම සිරිතකි (ඔබට අර්ථකථනය භාවිතා කළ හැකිය
අනුවාදය හෝ ඔබේ අභිමතය පරිදි වෙනත් පද්ධතියක්).

වින්‍යාසය අභිබවා යාම

වෙනස්කම් සහ ඔබගේ යැපීම් අවස්ථා වලදී වෙනස් විය හැක
සංවර්ධනය සහ නිෂ්පාදනය, අපට විවිධ වින්‍යාස ගොනු අවශ්‍ය වන බව පැහැදිලිය.

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 ස්වයංක්‍රීයව විශේෂ ගොනුවක් සොයයි
docker-compose.override.yml අගයන් අභිබවා යාමට docker-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 (හෝ push) පරිසර විචල්‍යයකින් තොරව
$MY_SERVICE_VERSION, අගය භාවිතා කරනු ඇත නවතමහැබැයි සෙට් උනොත්
ගොඩනැගීමට පෙර පරිසර විචල්‍යයේ වටිනාකම, එය ගොඩනඟන විට හෝ තල්ලු කිරීමේදී භාවිතා වේ
ලේඛනයට private.registry.mine.

මගේ මූලධර්ම

මට වැඩ කරන ප්‍රවේශයන් ඔබටත් වැඩ කළ හැකිය. මම මේවා අනුගමනය කරනවා
සරල නීති:

  • නිෂ්පාදනය, සංවර්ධනය (හෝ වෙනත් පරිසරයන්) සඳහා මගේ සියලු තොග අර්ථ දක්වා ඇත
    docker-compose ගොනු
  • හැකිතාක් දුරට මගේ සියලු පරිසරයන් ආවරණය කිරීමට අවශ්‍ය වින්‍යාස ගොනු
    අනුපිටපත් කිරීමෙන් වළකින්න.
  • සෑම පරිසරයකම වැඩ කිරීමට මට එක් සරල විධානයක් අවශ්‍ය වේ.
  • ප්‍රධාන වින්‍යාසය ගොනුවේ අර්ථ දක්වා ඇත docker-compose.yml.
  • රූප ටැග් හෝ වෙනත් අර්ථ දැක්වීමට පරිසර විචල්‍ය භාවිතා වේ
    පරිසරයෙන් පරිසරයට වෙනස් විය හැකි විචල්‍යයන් (වේදිකාගත කිරීම, ඒකාබද්ධ කිරීම,
    නිෂ්පාදනය).
  • නිෂ්පාදන විචල්‍යවල අගයන් සඳහා අගයන් ලෙස භාවිතා වේ
    පෙරනිමියෙන්, මෙම තොගය නොමැතිව නිෂ්පාදනයේ දියත් කළහොත් අවදානම අවම කරයි
    පරිසර විචල්‍ය සකසන්න.
  • නිෂ්පාදන පරිසරයක සේවාවක් ආරම්භ කිරීමට, විධානය භාවිතා කරන්න docker stack deploy - Compose-file docker-compose.yml -with-registry-auth my-stack-name.
  • වැඩ පරිසරය විධානය භාවිතයෙන් ආරම්භ වේ ඩොකර්-.

අපි සරල උදාහරණයක් බලමු.

# 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)තොගය ධාවනය කිරීමට
ප්‍රභව කේතය සවිකර ඇති සංවර්ධන මාදිලිය /ව්‍යාපෘතිය/src.

නිෂ්පාදනයේදී මට මෙම ගොනුම භාවිතා කළ හැකිය! ඒ වගේම මට අනිවාර්යයෙන්ම පාවිච්චි කරන්න පුළුවන්
එකම ගොනුව docker-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

එහි ප්‍රතිඵලයක් වශයෙන්, අපි විවිධ docker-compose ගොනු දෙකක් භාවිතා කළෙමු, ඒවා නොමැතිව
ඔබට ඇති ඕනෑම පරිසරයක් සඳහා අනුපිටපත් වින්‍යාසයන් භාවිතා කළ හැක!

පාඨමාලාව ගැන තව දැනගන්න "ලිනක්ස් පරිපාලක"

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න