Compose: рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝ рдиреЗ рдЫрд╡рд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рдордИ 2015  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: docker/compose

рдмрд╣реБрдд рдмрд╛рд░, рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рдХреЛ рдбреЙрдХрдЯрд░-рдХрдореНрдкреЛрдЬ.рдЗрдореНрд▓ рдореЗрдВ "рдмрд┐рд▓реНрдб:" рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЫрд╡рд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдбреЙрдХрдлрд╛рдЗрд▓ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореБрдЭреЗ docker build -t servicename_foldername рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рднрд╛рд╡рд┐рдд рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрджрдиреБрд╕рд╛рд░ рдЫрд╡рд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдЗрд░рд╛рджрд╛ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд▓реНрдХрд┐ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ, рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдЫрд╡рд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрджреНрдпрддрд┐рдд рд╣реИ рдФрд░ рдбреЙрдХ-рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдбреЙрдХ рдмрд┐рд▓реНрдб рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рд╕рдЪ рд╣реИ, docker-compose up рдХрднреА рднреА рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ "рдЗрд░рд╛рджрд╛" рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП: # 693

рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк docker-compose build рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

# 614 рдХрд╛ рдбреБрдкреНрд▓реАрдХреЗрдЯ

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

рд╕рдЪ рд╣реИ, docker-compose up рдХрднреА рднреА рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ "рдЗрд░рд╛рджрд╛" рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП: # 693

рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк docker-compose build рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

# 614 рдХрд╛ рдбреБрдкреНрд▓реАрдХреЗрдЯ

рдЕрд░реЗ @dnephin , рдХреНрдпрд╛ рдЫреЛрдЯреА рд╕реА рджреБрдирд┐рдпрд╛ рд╣реИ!

рдореИрдВ рдПрдХ рдРрд╕реЗ рдореБрджреНрджреЗ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдБ рдЬрд╣рд╛рдБ docker-compose build рдареАрдХ рд╕реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдПрдХ рд╡рд╛рд░реНрдирд┐рд╢ рдХрдВрдЯреЗрдирд░ рдХреЛ рдмрд╛рд╕реА рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдХрд╛рд░рдг рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЬреЛ рдореИрдВрдиреЗ рдХрд╣реАрдВ рдФрд░ рдкрдврд╝рд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг # 1195) рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ docker-compose build рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рд╣реИ рдФрд░ рдЗрди рдЬреИрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред

тХнтФАwting<strong i="11">@nuc</strong> ~/code/reddit-mobile тА╣python-2.7.12тА║ тА╣wting_chan-159_add_varnish_to_2X├Чad20b6dтА║
тХ░тФАтЮд  docker ps                                                                                                              2016.09.15 12:20:46 PDT 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
тХнтФАwting<strong i="12">@nuc</strong> ~/code/reddit-mobile тА╣python-2.7.12тА║ тА╣wting_chan-159_add_varnish_to_2X├Чad20b6dтА║
тХ░тФАтЮд  docker-compose --version                                                                                               2016.09.15 12:20:48 PDT 
docker-compose version 1.8.0, build f3628c7
тХнтФАwting<strong i="13">@nuc</strong> ~/code/reddit-mobile тА╣python-2.7.12тА║ тА╣wting_chan-159_add_varnish_to_2X├Чad20b6dтА║
тХ░тФАтЮд  docker --version                                                                                                       2016.09.15 12:20:51 PDT 
Docker version 1.12.1, build 23cf638
тХнтФАwting<strong i="14">@nuc</strong> ~/code/reddit-mobile тА╣python-2.7.12тА║ тА╣wting_chan-159_add_varnish_to_2X├Чad20b6dтА║
тХ░тФАтЮд  docker-compose build && docker-compose up                                                                          2 тЖ╡ 2016.09.15 12:23:35 PDT 
Building web
Step 1 : FROM reddit/reddit-nodejs:latest
 ---> ee57c186eb35
Step 2 : VOLUME /src
 ---> Using cache
 ---> 3720601d98c8
Step 3 : WORKDIR /src
 ---> Using cache
 ---> d4b9b360ef4e
Step 4 : EXPOSE 4444
 ---> Using cache
 ---> 5e232be73781
Step 5 : ENTRYPOINT npm start
 ---> Using cache
 ---> 1094fc9857bb
Successfully built 1094fc9857bb
Building varnish
Step 1 : FROM quay.io/reddit/varnish-fastly
# Executing 1 build trigger...
Step 1 : COPY default.vcl /etc/varnish/default.vcl
 ---> Using cache
 ---> ac9dadb35674
Step 2 : ENV VARNISH_PORTS 8080
 ---> Using cache
 ---> 3c43e0226f5f
Step 3 : EXPOSE 8080
 ---> Using cache
 ---> c88093c2ff32
Successfully built c88093c2ff32
Starting redditmobile_web_1
Starting redditmobile_varnish_1
Attaching to redditmobile_web_1, redditmobile_varnish_1
varnish_1  | storage_malloc: max size 100 MB.
varnish_1  | SHMFILE owned by running varnishd master (pid=1)  # STALE LOCK FILE
varnish_1  | (Use unique -n arguments if you want multiple instances.)
web_1      | 
web_1      | > [email protected] start /src
web_1      | > NODE_ENV=production npm run server
web_1      | 
redditmobile_varnish_1 exited with code 2
web_1      | 
web_1      | > [email protected] server /src
web_1      | > NODE_ENV=production node ./bin/ProductionServer.js
web_1      | 
web_1      | Started cluster with 4 processes.
web_1      | Started server at PID 31
web_1      | Started server at PID 46
[..]

рд╣реЗ @wting

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдПрдХ рд╡реЙрд▓реНрдпреВрдо (https://docs.docker.com/compose/overview/#/preserve-volume-data-when-containers-are-created) рдореЗрдВ рд╣реИред

рдЖрдк рдкреБрд░рд╛рдиреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП docker-compose down рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡реЙрд▓реНрдпреВрдо рд╕рдВрджрд░реНрдн рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред рдЕрдЧрд▓реЗ up рдХреЛ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдпрд╣ рдПрдХ рд╡реЙрд▓реНрдпреВрдо рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рддрд╛рд▓рд╛ рдХрднреА рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХрдореНрдкреЛрдЬрд╝ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдЗрд╕рд▓рд┐рдП down рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рд╛рде рд╣реА рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдзрдиреНрдпрд╡рд╛рдж! docker-compose down рдХрд╛рдо рдХрд┐рдпрд╛, рд╕рд╛рде рд╣реА docker-compose up --force-recreate (рд▓реЗрдХрд┐рди docker-compose --build )ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗрдм рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЙрд▓реНрдпреВрдо рдШреБрдбрд╝рд╕рд╡рд╛рд░ рд╣реИ рд▓реЗрдХрд┐рди рд╡рд╛рд░реНрдирд┐рд╢ рдХрдВрдЯреЗрдирд░ рдирд╣реАрдВ рд╣реИ; рдЕрднреА рддрдХ рд╡рд╛рд░реНрдирд┐рд╢ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЪрд╛рд░реЛрдВ рдУрд░ рдЫрдбрд╝реАред рдпрд╣рд╛рдБ docker-compose.yml рдлрд╝рд╛рдЗрд▓ рд╣реИ:

version: '2'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
     - "4444:4444"
    volumes:
     - .:/src
  varnish:
    build:
      context: .
      dockerfile: Dockerfile.varnish
    ports:
    - "4301:80"
    depends_on:
    - web

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП:

рд╢реБрдХреНрд░рд┐рдпрд╛, рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧ, рдореИрдВ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ "рдмрдЪ рдЧрдпрд╛" => "docker-compose up --force-recreate (рд▓реЗрдХрд┐рди docker-compose --build) рдирд╣реАрдВред"

docker-compose up --build

рд╕рдЪ рд╣реИ, docker-compose up рдХрднреА рднреА рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ "рдЗрд░рд╛рджрд╛" рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП: # 693

рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк docker-compose build рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

# 614 рдХрд╛ рдбреБрдкреНрд▓реАрдХреЗрдЯ

рдзрдиреНрдпрд╡рд╛рдж рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдПрдХ рдирдП рдбреЙрдХрдлрд╛рдЗрд▓ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдФрд░ рдирд╡реАрдирддрдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдорджрдж рдорд┐рд▓реА

FYI рдХрд░реЗрдВ - рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ рдФрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдлрд┐рдХреНрд╕ рдерд╛ред рдЗрдВрдЯрд░рд╡реНрдпреВ рдиреЗ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдкрд╣реБрдВрдЪрд╛рдпрд╛ред рдЕрдЪреНрдЫреА рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

docker-compose up --build -V

рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ -V рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ:
-V, --renew-anon-volumes Recreate anonymous volumes instead of retrieving data from the previous containers.

docker-compose рдЕрдВрджрд░ рдПрдХ рдПрдХрд▓ рдЫрд╡рд┐ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП:

docker-compose up -d --force-recreate --no-deps --build $service

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

docker-compose up -d --force-recreate --no-deps --build varnish

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

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

Hendrik-H picture Hendrik-H  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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

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