Compose: рдХрдВрдкреЛрдЬрд╝ рдХреЗ рдЕрдВрджрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╡рд╛рд▓реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 13 рдлрд╝рд░ре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: docker/compose

рд╕рдорд╕реНрдпрд╛

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛:

  • рдЦреЛрд▓ рдпрд╛ .env рдлрд╝рд╛рдЗрд▓
  • рд▓рд┐рдЦреЗрдВ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд

рдЕрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╡рд╛рд▓реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рдВрд╕реНрдХрд░рдг рдХрдВрдкреЛрдЬрд╝ рдХреЗ рдЕрдВрджрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг

рдирд┐рдореНрди рдиреНрдпреВрдирддрдо рд▓рд┐рдЦреЗрдВ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

version: '3'
services:
    example:
        environment:
            TAG: edge
        image: alpine:${TAG}

${TAG} рдЪрд░ рд▓рд┐рдЦреЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ _anywhere_ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

рдЬреИрд╕реЗ:

$ docker-compose up
WARNING: The TAG variable is not set. Defaulting to a blank string.
Pulling example (alpine:latest)...
...

рдкрд░рдВрддреБ:

$ TAG=edge docker-compose up
Pulling example (alpine:edge)...
...

$TAG рдЕрдм рд▓рд┐рдЦреЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдпреЗ рдкрд░рд┐рдгрд╛рдо

рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ env рдЪрд░ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдПрдирд╡реА рдЪрд░ рдЙрдкрд▓рдмреНрдз/рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реЗ рдЬрд┐рдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдкрд╣рд▓реЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рд╕реВрдЪреА рдореЗрдВ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рддрдХрдиреАрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢:

$ docker version
Client:
 Version:      1.13.1
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   092cba3
 Built:        Wed Feb  8 08:47:51 2017
 OS/Arch:      darwin/amd64

Server:
 Version:      1.13.1
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   092cba3
 Built:        Wed Feb  8 08:47:51 2017
 OS/Arch:      linux/amd64
 Experimental: true
$ docker-compose version
docker-compose version 1.11.1, build 7c5d5e4
docker-py version: 2.0.2
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2j  26 Sep 2016

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреГрдкрдпрд╛ рдЕрд╕рдВрдмрджреНрдзрддрд╛ рдкреГрд╖реНрда рджреЗрдЦреЗрдВ: https://docs.docker.com/compose/environment-variables/

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдкрдХреА рд░рдЪрдирд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ environment рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреА рд╣реИ рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрдкрдХреЗ рдХрдВрдЯреЗрдирд░/рд╕реЗрд╡рд╛ рдХреЗ рдЕрдВрджрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗред рджреВрд╕рд░реА рдУрд░ рдЪрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореЗрдЬрдмрд╛рди рдкрд░ рдореМрдЬреВрдж рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ docker-compose рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╡реЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЯ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреГрдкрдпрд╛ рдЕрд╕рдВрдмрджреНрдзрддрд╛ рдкреГрд╖реНрда рджреЗрдЦреЗрдВ: https://docs.docker.com/compose/environment-variables/

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдкрдХреА рд░рдЪрдирд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ environment рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреА рд╣реИ рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрдкрдХреЗ рдХрдВрдЯреЗрдирд░/рд╕реЗрд╡рд╛ рдХреЗ рдЕрдВрджрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗред рджреВрд╕рд░реА рдУрд░ рдЪрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореЗрдЬрдмрд╛рди рдкрд░ рдореМрдЬреВрдж рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ docker-compose рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╡реЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЯ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдЕрдм рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЙрд▓ рдХреЛ рд▓рдкреЗрдЯ рд░рд╣реА рд╣реИ:

...
docker-compose $DOCKER_COMPOSE_FILES up $@
...

DOCKER_COMPOSE_FILES "-f file1.yml -f file2.yml ..." рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдпрд╣ рд╕рдм рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореЗрд░реА рдбреЛрдХрд░-рд▓рд┐рдЦреЗрдВ рдЫрд╡рд┐ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реИ рдХрд┐:

...
image: "...-service:${DOCKER_TAG}"
...

рдореИрдВрдиреЗ рдХрдИ рддрд░реАрдХреЗ рдЖрдЬрдорд╛рдП:

  • рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ DOCKER_TAG рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реЛрд░реНрд╕ рдХрд░рдирд╛
  • DOCKER_TAG рдХреЛ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛
  • DOCKER_TAG рдХреЗ рд╕рд╛рдордиреЗ docker-compose рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:
    DOCKER_TAG=... docker-compose...

рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ - DOCKER_TAG рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

HackerWilson picture HackerWilson  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

guycalledseven picture guycalledseven  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

davidbarratt picture davidbarratt  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

29e7e280-0d1c-4bba-98fe-f7cd3ca7500a picture 29e7e280-0d1c-4bba-98fe-f7cd3ca7500a  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

CrimsonGlory picture CrimsonGlory  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ