ïŒå€ããã®ã¯ããªãå€ãã®è·ç©ãèç©ããŠããã®ã§ãç§ã¯ããã®ããã«æ°ããåé¡ãäœæããŠããŸããïŒ
docker-compose.yml
ã®ä»»æã®*æ§æãšã³ããªã®å€ã«ç°å¢å€æ°ãæž¡ãããšãã§ããã¯ãã§ãã å€ãã®äººããããããšæã£ãŠããŸãã移æ€æ§ã«åªããŠãããæ··ä¹±ãåŒãèµ·ãããªãããšã«æºè¶³ããŠããŸãã
ç§ã¯ããã€ãã®èšç®ããããŸãã
ç°å¢ã«ååšããªããã°ãªããªãå€æ°ãã€ãŸããååšããªãå Žåã¯Composeãå®è¡ãæåŠããããšãæå®ã§ãããšäŸ¿å©ã§ãã ãã ããããã¯å€ãã®å Žåã¯é¢åãªã®ã§ãæ瀺çã«æå¹ã«ããããããã©ã«ãå€ãæå®ã§ããããã«ããå¿ èŠããããŸãã
MVPã®å®è£ ã«ã¯ã©ã¡ãã®æ©èœãå¿ èŠãããŸããããäžäœäºææ§ã®ããæ¹æ³ã§äž¡æ¹ãå®è£ ããããã®æ確ãªãã¹ãå¿ èŠã§ãã
ééããªãéãã確ç«ãããæšæºãå®è£ ãã匷åãªã±ãŒã¹ããããŸããæ©èœã«å¯ŸããèŠä»¶ã¯æå°éã§ãã
${VARIABLE}
- VARIABLE
ãèšå®ãããŠããªãå Žåã空ã®æååãåºåããŸã${VARIABLE-default}
- VARIABLE
ãèšå®ãããŠããªãå Žåã default
åºåããŸã${VARIABLE?}
- VARIABLE
ãèšå®ãããŠããªãå Žåhttps://github.com/docker/compose/pull/845ã¯ãBashã¹ã¿ã€ã«ã®${VARIABLE:default}
æ§æãå®è£
ããŸãããããã¯ãPOSIXãã©ã¡ãŒã¿ãŒã®æ¡åŒµã«äŒŒãŠããŸããããããã«ç°ãªããŸãã
Pythonã®os.path.expandvars
é¢æ°ã¯ãPOSIXãã©ã¡ãŒã¿ãŒæ¡åŒµã®æãåºæ¬çãªã±ãŒã¹ãå®è£
ããŸãã
>>> from os.path import expandvars
>>> expandvars('${HOME}')
'/Users/aanand'
ãã ããå°ãªããšã2ã€ã®åé¡ããããŸãã
`` `
expandvarsïŒ '$ {UNSET}'ïŒ
'$ {UNSET}'
`` `
- äžæ£ãªåœ¢åŒã®æ§æã¯ãšã©ãŒã«ãªããŸãã-代ããã«ãæ¡åŒµãè¡ãããŸããã
`` `
expandvarsïŒ '$ {HOME'ïŒ
'$ {HOME'
`` `
ãããŸã§ã®ãšããã httpsïŒ//github.com/docker/compose/pull/845ãæãè¿ããã®ã§ãããæ£èŠè¡šçŸã«äŸåããå®è£ ã«ã¯åºæ¬çã«èŠæããŠããŸãã ãã³ãã¬ãŒãäœæã¯ç°¡åãªä»äºã§ã¯ãªãã人ã ã¯ããããçš®é¡ã®å£ãããã®ãå ¥ããããšããŠããã®ã§ãå ç¢ã§å³å¯ã§ã圹ç«ã€ã¡ãã»ãŒãžã§ãšã©ãŒãçºçãããã®ãå¿ èŠã§ãã 2ã€ã®éèŠãªèŠä»¶ïŒ
Bashã®ãããªå€æ°è£éã®åªããPythonå®è£ ããã§ã«ååšããå¯èœæ§ããããŸããããã§ãªãå Žåã¯ãComposeã³ãŒãããŒã¹ãè¥å€§åããããããã¹ã¿ã³ãã¢ãã³ã§äœããäœæããæ¹ãã¯ããã«æãŸããã§ãããã
*å®éãè£éãèš±å¯ãã¹ãã§ã¯ãªãæ§æããŒã¯ãããŸããïŒ
ãããã®ç¢ºç«ãããUNIXæšæºãã©ããŸã§é²ãããã§ããïŒ ïŒFWIWãããã¯äºå®äžã®æšæºã§ã¯ãªããå®éã®æšæºã§ããïŒ
Dockerfilesã§POSIXãã©ã¡ãŒã¿ãŒå±éã誀ã£ãŠäœ¿çšããããšãã人ãããã®ã§ãããããdocker-compose.ymlã§ãµããŒããããŠããã°ãç§ã¯å¹žããªãã£ã³ãã³ã°ã«ãŒã«ãªããŸãã
@kojiromikeããŒããPOSIXãã©ã¡ãŒã¿ã®æ¡åŒµã¯å®éã«ç§ãç®æããŠãããã®ã§ãããããã¥ã¡ã³ããèªããšãæ§æ/ã»ãã³ãã£ã¯ã¹ãèŠããŠããªãã£ãããã§ãã
ç·šéïŒèª¬æã®æ§æã«ã€ããŠã®èããæŽæ°ããŸããã
ç§ã¯å€ãã¹ã¬ããããã©ããŒããŠããŸãããããã®æ©èœãç·æ¥ã«å¿ èŠã§ããã æåŸã«ãèŠçã倧ãããããããPOSIXã¹ã¿ã€ã«ã®å€æ°ã眮ãæããyamlããªããã»ããµbahsã¹ã¯ãªãããäœæããŸããã æ£åžžã«åäœããŸããããåé¡ã1ã€ãã£ããããæçµçã«ã¯äœ¿çšãäžæ¢ããŸããã æçµçãªè§£æ±ºçãåŸãåã«ãæåã«ããªããã»ããµãå®è¡ãããã¹ãŠã®ãã©ã¡ãŒã¿ãèšå®ããå¿ èŠããããŸãã çŸåšãdocker yamlextendsæ©èœã䜿çšããŠããŸãã ããã«ãããå®éã®æ§æããã§ãã¯ã€ã³ããŠãã¿ãŒã²ããã§å®è¡ããããšãã§ããŸãã ç§ãã¡ã¯äœãèµ·ããããããç¥ã£ãŠããŸãã
ç§ã¯docker-composeã®åãæž¡ãå€æ°ã®ãµããŒã¿ãŒã§ããããä»ã¯ããããããŸããã
çæ³çãªè§£æ±ºçãšããŠãDockerã®æ¡åŒµãæ£ããè¡ãããããšãæãã§ããŸãã ããæå³ã§ã¯ãããã¯äž¡æ¹ã«é©åãããœãªã¥ãŒã·ã§ã³ã«ãªãã§ãããã ã§ã¯ãdockerextendsã§äœãå£ããŠããã®ã§ããããïŒ åºæ¬çã«ãç¶æ¿ããããã¡ã€ã«ã«ãã¹ãŠã®ãšã³ããªãæžã蟌ãå¿ èŠããããšããäºå®ã§ãã ãªãŒããŒã©ã€ãããããã®ã ããå ¥åããããŒãžã§ã¯ãããŸããã
å®éã®äŸãšãããã©ãã»ã©åé·ã§ããããèŠãŠãã ããã éèŠãªã®ã¯2è¡ã ãã§ãã
#Common
elasticsearch:
image: zinvoice/elasticsearch
hostname: elasticsearch
restart: always
dns: 172.17.42.1
ports:
- "9200:9200"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /data/elasticsearch:/opt/elasticsearch/data/elasticsearch
logstash:
image: zinvoice/logstash
hostname: logstash
dns: 172.17.42.1
restart: always
ports:
- "5000:5000"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
kibana:
image: zinvoice/kibana
hostname: kibana
dns: 172.17.42.1
restart: always
ports:
- "5601:5601"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
logspout:
image: zinvoice/logspout
hostname: logspout
command: logstash://logstash.docker:5000
restart: always
dns: 172.17.42.1
ports:
- "8003:8000"
volumes:
- /var/run/docker.sock:/tmp/docker.sock
doorman:
image: zinvoice/doorman
hostname: doorman
restart: always
dns: 172.17.42.1
ports:
- "8085:8085"
# inherited
elasticsearch:
extends:
file: ../common.yml
service: elasticsearch
logstash:
extends:
file: ../common.yml
service: logstash
kibana:
extends:
file: ../common.yml
service: kibana
logspout:
extends:
file: ../common.yml
service: logspout
doorman:
environment:
- DOORMAN_GITHUB_APPID=xxxxxxxx
- DOORMAN_GITHUB_APPSECRET=xxxxxx
links:
- nginxtrusted
extends:
file: ../common.yml
service: doorman
ãããã£ãŠãç§ã®æšå¥šããä¿®æ£dockerã¯ãåé·æ§ãæžããããã«æ¡åŒµããŸãã YAMLã¯å¿ èŠãªãã¹ãŠã®æ©èœãæäŸãããããããã»ã©å€ãã®ã³ãŒããèšè¿°ããå¿ èŠã¯ãããŸããã æšæºã®YAMLã䜿çšããå Žåããã¡ã€ã«ã¯ä»ã®ããŒã«ãUIã§åæãŸãã¯äœæã§ããŸãã
YAMLã®ãããŒãã¢ã³ã«ãŒããšYAMLã®ããã¡ã€ã«ããŒãžããèŠãŠãã ãããããã¯å®ç§ãªãœãªã¥ãŒã·ã§ã³ãããããŸããã
åèïŒãã®è°è«ã¯çŸåšïŒ1380ã§ç¶ç¶äž
@ Vad1mo extends
ãããªãã®ã±ãŒã¹ã§ã¯äžååã§ããããšã«åæããŸãã ãã®ãšã¯ã¹ããªãšã³ã¹ãæ¹åããããã«ã§ããããšã¯ãããããããŸããå¥ã®åé¡ãéããŠãããã§èéã«è¿œã蟌ãŸããªãããã«ããŠããã ããŸãããã
ãã¡ããïŒ ãããç°¡åã§ãšã¬ã¬ã³ããªä»£æ¿æ段ã«ãªãå¯èœæ§ãããããšã匷調ãããã£ãã ãã§ãã
compose extendsã§å€æ°ã®åãæž¡ããååã«ãªããããå Žåãcompose-extendsãæ¹åãããšãå€æ°ã®åãæž¡ããå»æ¢ãããŸãã ç解ããæŠå¿µãå°ãªãã»ã©ããŠãŒã¶ãŒã¯ç°¡åã«ç解ã§ããŸãã
ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯ã volumes
ã§$PWD
ãèš±å¯ããããšã§ããããã«ãããããŒã å
ã®ãã¹ãŠã®éçºè
ã¯ãã©ãã«ã§ããªããžããªãè€è£œã§ãããã¹ã¯æ£ããããŠã³ããããŸãã
elasticsearch:
image: zinvoice/elasticsearch
volumes:
- $PWD:/app
@mattesãã§ã«ãµããŒããããŠãããšæããŸããã .:/app
ããµããŒããããŠãããšæããŸã
@aanand PoCãšããŠã Pythonã§POSIXPEã®ããŒãã£ããã¯ã¢ãããè¡ããŸããã åææ¥ã«ã
@kojiromikeããããã ã ç¶è¡ããäºå®ãããå Žåã¯ãç¥ãããã ããã
@aanandæå³ããŠããŸãããshlex
ã䜿çšããã®ã¯æªãèãã ã£ããšæããŸãïŒã ãã¡ããããã°ã¬ããŒããPRã¯å€§æè¿ã§ãã
@dnephin $HOME
/ ~
ã©ãã§ããïŒ
@nafgãããã¯äž¡æ¹ãšãããªã¥ãŒã ã®ãã¹ããã¹ã§ãµããŒããããŠããŸã
@dnephinèå³æ·±ããb / cã©ããããããç§ã¯ '$ HOME'ãšããååã®ãã£ã¬ã¯ããªã«
@aanand "$ { VARIABLEïŒdefault }"ææ¡ã®ããã«ãglobal_extendsïŒãŸã㯠"import"ïŒã䜿çšãããšãããã¯ããªã匷åã«ãªããŸãã
QïŒããã«ããããã¹ãã«å
¬éãããããŒãçªå·ãæå®ã§ããŸããïŒ ã®ããã«-"$ {WEB_ PORTïŒ80 }ïŒ80"ïŒ
ãŠãŒã¹ã±ãŒã¹ã¯ãåããã·ã³/ã¯ã©ã¹ã¿ãŒäžã§ã¢ããªã®è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ãç°¡åã«èµ·åã§ããããã«ããããšã§ããéåžžã¯ãç°ãªãããŒãããªãã¹ã³ããããç°ãªãããŒã«ã«ãã¡ã€ã³åã«å²ãåœãŠãããŸãã
ã¯ããããªãã¯ãããããããšãã§ããã§ãããã
docker-compose scale my_app=3
ãšäžç·ã«ããªã¥ãŒã å
ã®å€æ°ã䜿çšããããšæããŸãã ç§ã¯ãããæã£ãŠããŸãdocker-compose.yml
server:
image: alexanderilyin/docker-teamcity-server
ports:
- "8111:8111"
volumes:
- .TeamCity:/root/.BuildServer
links:
- mysql
mysql:
image: alexanderilyin/docker-mysql
volumes:
- .MySQL:/var/lib/mysql
environment:
MYSQL_DATABASE: teamcity
MYSQL_USER: teamcity
MYSQL_PASSWORD: teamcity
MYSQL_ALLOW_EMPTY_PASSWORD: yes
agent:
image: alexanderilyin/docker-teamcity-agent
links:
- server
ãŸãããšãŒãžã§ã³ãã«scale
ã䜿çšãããšãŒãžã§ã³ãã«åçããªã¥ãŒã ã䜿çšããŠãèµ·åéã§ããŒã¿ãä¿æã§ããããã«ããããšèããŠããŸãã次ã«äŸã瀺ããŸãã
agent:
image: alexanderilyin/docker-teamcity-agent
volumes:
- .agent_{$AGENT_INSTANCE_ID}:/opt/buildAgent
links:
- server
ç»ååã®äžéšãšããŠå€æ°ãè£éããããšãå¯èœã ãšæããŸã
https://github.com/openshift/source-to-imageã䜿çšããŠããã¹ãŠã®ãã©ã³ãã®CIã§ããŒã«ã«ã³ã³ãããŒãæ§ç¯ããdocker-composeã䜿çšããŠãã¹ããå®è¡ããŠããŸãã
åçã€ã¡ãŒãžã䜿çšãããã¹ãã®å®è¡ã¯ãdocker-composeã§ã¯éåžžã«è€éã§ãããæåã®ãã³ãã¬ãŒãã¬ã³ããªã³ã°ãå¿
èŠã§ãã
ãããã COMPOSE_PROJECT_NAME
ãèšå®ããŠãå®è¡ããšã®ãã¬ãã£ãã¯ã¹ãå¶åŸ¡ããããããã§ã«æ£ããå®è¡ã§ããããã«ããããšãã§ããŸããïŒ ãããããªããååã®åšãã«è€éãªããžãã¯ãšèªã¿åãäžå¯èœãªymlãã¡ã€ã«ãçšæããå¿
èŠã¯ãããŸããã
@andreromã¯ãã©ããŒããŸããã 代ããã«ç»åããããã£ãèšå®ããããšããŠãããšãã«ã次ã®Sets the project name, which is prepended to the name of every container started by Compose
ãå¶åŸ¡ããããã¥ã¡ã³ãã«ãããšïŒ
web:
image: <I_AM_DYNAMIC>
ãããç§ã®ééãã
ããªããæå³ãããšæã£ã
<I_AM_DYNAMIC>:
image: nginx
åçãªã€ã¡ãŒãžïŒããã³ãã«ãïŒåç §ã¯ã確ãã«éåžžã«çã«ããªã£ãŠããŸãã ããšãã°ãããã°ã©ãã³ã°èšèªã®ãããã°ããŒã¹ã³ã³ãããšéãããã°ããŒã¹ã³ã³ãããåãæ¿ããããšã¯ããã®ããã®è¯ããŠãŒã¹ã±ãŒã¹ã§ãã
è¿œå ã®ãŠãŒã¹ã±ãŒã¹_ïŒ@ Maxim-Filimonovã念é ã«çœ®ããŠããå¯èœæ§ããããŸãïŒ_ïŒç»åã䜿çšããã¿ã°ããªãŒããŒã©ã€ãã§ãããããããã©ã«ãã§ïŒlatestã䜿çšã§ããŸãããymlãå€æŽããã«ä»ã®äœããç°¡åã«ãã¹ãããããã«å€æŽããŸããã¡ã€ã«_ïŒåºæ¬çã«CIã®ãŠãŒã¹ã±ãŒã¹ã«å¿ èŠïŒ_ã
@andreromã¯ãŸãã«ç§ãã¡ã®ãŠãŒã¹ã±ãŒã¹ã§ãïŒ+1ïŒ
ããã¯æ¬¡ã®ãããªå Žåã«ãæ©èœããŸããïŒ
web:
environment:
- FOO=${whoami}
@ k0377ããã¯å®éã«ã¯ã·ã§ã«ã«ãã£ãŠåŠçããããã®ã§ããããããããªããšã¯æããŸããããçµæãç°å¢å€æ°ã«è¿œå ããŠäœ¿çšããããšãã§ããŸãã
ãã®ç¹å®ã®ã±ãŒã¹ã§ã¯ã $USER
ç°å¢å€æ°ã¯ããããåããã®ãæäŸããŸãã
@aanandæ¢åã®æ¢åã®ãã³ãã¬ãŒããšã³ãžã³ã䜿çšããŠã¿ãŸãããïŒ Jinja2ããããæ£åžžã«åäœããŸãã
åã«è¿°ã¹ãããã«ãç¬èªã®ãã³ãã¬ãŒããå®è£ ããããšã¯ç°¡åãªäœæ¥ã§ã¯ãªãã®ã§ïŒæ£èŠè¡šçŸã¯ããã»ã©ã¯ãŒã«ã§ã¯ãããŸããïŒãå å®ã§ããããšã蚌æãããŠããæ¢åã®ãã³ãã¬ãŒãã䜿çšããå¿ èŠããããŸãã
ãŸãã¯ãYAMLã¢ã³ã³ãŒã«ãšåç §ã䜿çšããããšãã§ããŸãhttps://gist.github.com/bowsersenior/979804
ãã ããå€æ°ã®äœ¿çšã«ã¯å¶éããããŸãïŒã³ã³ãã³ãã®éäžã«å€æ°åãæ¿å ¥ããŸãïŒã
Jinja2ã®+1ïŒããã¯ç¢ºãã«åã«ãã£ããããansibleã¯ããã次ã®ç®çã§äœ¿çšããŸã
ãŸãã«ãã®ãŠãŒã¹ã±ãŒã¹ïŒymlãã¡ã€ã«ã§ãã³ãã¬ãŒãåïŒ
ç«æãåå1æ25åPMã«2015幎5æ26æ¥ãtonnzorã«[email protected]æžããŸããïŒ
@aanandhttps ïŒ//github.com/aanandæ¢åã®ãã³ãã¬ãŒãã䜿çšããªãã®ã¯ãªãã§ãã
ãã§ã«ååšãããšã³ãžã³ïŒ Jinja2ããããæ£åžžã«åäœããŸããåã«è¿°ã¹ãããã«ãç¬èªã®ãã³ãã¬ãŒããå®è£ ããããšã¯ç°¡åãªäœæ¥ã§ã¯ãããŸãã
ïŒãããŠæ£èŠè¡šçŸã¯ããã»ã©ã¯ãŒã«ã§ã¯ãããŸããïŒãã®ãããæ¢åã®ãã®ã䜿çšããå¿ èŠããããŸãã
ããã¯å å®ã§ããããšã蚌æãããŸãããâ
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/docker/compose/issues/1377#issuecomment-105493447 ã
Jinja2ã¯å¿ èŠä»¥äžã®ããšã_ãããã_è¡ããŸãïŒ
ãã®ãããªãã®ãComposeã«è¿œå ããããšã¯ãããŸããã Jinja2ãå€æ°ãè£éããããã«æ§æã§ããå Žåã¯ããããåè£ã«ãªãå¯èœæ§ããããŸãã
å®éã«ã«ãŒãããã®ã¯é¢çœããããããŸããã
ã³ã³ãããéå§ããã顧客ã®ãªã¹ãããããšä»®å®ããŸã
ããã§ã顧客åºæã®å€æ°ãç°å¢ã«é
眮ããŸãã
æ¡åŒµ/ç¶æ¿ã¯ãçŸåšã匷åããããã«èå³æ·±ããããããŸãã
åæ©çãªæ¡åŒµã¡ã«ããºã ã
ãã£ã«ã¿ã¯ãæ¢åã®å€æ°ã§äœããè¡ãã®ã«æé©ã§ãã
13:56ã§ç«ã2015幎5æ26æ¥ã«ã¯ãAanandãã©ãµã[email protected]
æžããŸããïŒ
Jinja2ã¯å¿ èŠä»¥äžã®ããšã_ãããã_è¡ããŸãïŒ
- æ¡ä»¶æ
- ã«ãŒã
- æ¡åŒµ/ç¶æ¿
- ã³ã¡ã³ã
- ãã£ã«ã¿
ãã®ãããªãã®ãComposeã«è¿œå ããããšã¯ãããŸããã Jinja2ãæ§æã§ããå Žå
å€æ°ãè£éããã ããªãããããåè£ã«ãªããããããŸãããâ
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/docker/compose/issues/1377#issuecomment-105498909 ã
ãããã¯èå³æ·±ãæ©èœãããããŸããããComposeãšãã¡ã€ã«åœ¢åŒã®äž¡æ¹ã玹ä»ãããããã¯ããã«è€éã§ãããïŒç§ãç¥ãéãïŒåäžã®å®è£ ã§äž¡æ¹ãç¹å®ã®ãã³ãã¬ãŒãèšèªã«çµã³ä»ããããšã«ãªããŸããã¹ããã¯ãªãã ããã¯åã«å®çŸå¯èœã§ã¯ãããŸããã
@aanandããã«ããã€ãã®ã¡ã¢ïŒ
jinja2ã€ã³ããŒããã³ãã¬ãŒããã
template = TemplateïŒ 'Hello {{name}}ïŒ'ïŒ
template.renderïŒname = "Aanand"ïŒ
ããã«ã¡ã¯ã¢ãŒãã³ãïŒ
ããé«ãã»ãã¥ãªãã£ãå¿ èŠãªå Žåã¯ãäžå€ã®ãµã³ãããã¯ã¹ã䜿çšã§ããŸãã
jinja2.sandboxããã€ã³ããŒãImmutableSandboxedEnvironment
env = ImmutableSandboxedEnvironmentïŒïŒ
template = env.from_stringïŒ 'Hello {{name}}ïŒ'ïŒ
template.renderïŒname = "Aanand"ïŒ
ããã«ã¡ã¯ã¢ãŒãã³ãïŒ
ç§ãã¡ã®å Žåã¯æ¬¡ã®ããã«ãªããŸãã
OSã®ã€ã³ããŒã
jinja2.sandboxããã€ã³ããŒãImmutableSandboxedEnvironment
env = ImmutableSandboxedEnvironmentïŒïŒ
template = env.from_stringïŒ 'Hello {{name}}ïŒ'ïŒ
template.renderïŒ** os.environïŒ
- ãã£ã«ã¿ã¯å¿ èŠãããŸãããïŒ ãã£ã«ã¿ã䜿çšãããšãããã©ã«ãå€ãç°¡åã«å®çŸ©ã§ããŸãïŒ{{value | defaultïŒ "default"ïŒ}}ïŒ
- æ¡åŒµJinjaæ©èœã䜿çšããŠYAMLãã¡ã€ã«ããã蟌ããŠãŒã¶ãŒãæ¬åœã«æ°ã«ããå¿ èŠããããŸããïŒ åæ§ã«ããŠãŒã¶ãŒã¯ç¡å¹ãªYAMLãã¡ã€ã«ãæåã§äœæã§ããŸãã ã·ã³ãã«ã«ä¿ã€å¿ èŠããããšæããŸããæå®ãããJinjaãã³ãã¬ãŒããåŠçãããšã©ãŒãçºçããå ŽåããŸãã¯çæãããYAMLãç¡å¹ãªå Žåã¯ãšã©ãŒãè¿ããŸãïŒçŸåšãšåãïŒã
- Jinja2ã解決çãšèŠãªããŠããªãå Žåã¯ãå°ãªããšã{{variable}}ãæ§æãšããŠäœ¿çšãããšããã§ãããã
- Djangoã¯æ£èŠè¡šçŸã䜿çšããŠãã³ãã¬ãŒãã解æããã³çæããŸãã ããã¯é·ãéçç£ã°ã¬ãŒãã§ãããããã§åé¡ãªãçããŸãã
OSã®ã€ã³ããŒã
ã€ã³ããŒãå
template = "Hello {{name}}ïŒ"
re.subïŒ "{{\ s _ïŒ[a-zA-Z0-9 _] +ïŒïŒ\ s_}}"ãã©ã ãmïŒos.environ.getïŒm.groupïŒ1ïŒã ''ïŒããã³ãã¬ãŒãïŒ
ãããã«ãããã©ã®ãããªãœãªã¥ãŒã·ã§ã³ãæ¡çšããå Žåã§ãããã®æ©èœãããŒãªã³ã°ããå¿ èŠããããŸãã
ãã³ãã¬ãŒããæ€èšããå Žåãç§ã¯äžè¬çãªãã³ãã¬ãŒããœãªã¥ãŒã·ã§ã³ã䜿çšããããšã«+1ããŠããŸãã ããšãã°ã http ïŒ
@aanandç§ã¯ããªãã®
æ§æDSLã®ç°¡æœãã
ãã¶ããããã¯å€éšãããžã§ã¯ããšããŠè¡ãããã¹ãã ããšã¡ã¿ã³ã³ããŒã¶ãŒã¯èšãã ãã
compose.tpl.ymlãšvariables.ymlãåãåããdocker-compose.ymlãäœæããŸã
ãããŠãç§ãã¡ã¯è¡ããŸãã
@tonnzorã瀺ããããã«ãtã¯Pythonã³ãŒãã®å°ããªæçã§å®è¡ã§ããŸãã
ããã¯ããããå¿
èŠãšããªã人ã
ã«åŒ·åãªãã³ãã¬ãŒããæäŸããŸã
åçŽãªã¿ã¹ã¯ã«è€éããå°å
¥ããŸãã
2015幎5æ26æ¥ç«ææ¥ååŸ4æ52åãSebastiaan van Stijn <
[email protected]>ã¯æžããïŒ
ãã³ãã¬ãŒãã次ã®å Žåãç§ã¯_generic_ãã³ãã¬ãŒããœãªã¥ãŒã·ã§ã³ã䜿çšããããšã«+1ããŠããŸã
èæ ®ãããŸãã äŸïŒ http ïŒ
èšèªã ããã¯åãªãäŸã§ãããä»ã®ãã³ãã¬ãŒããšã³ãžã³ã¯
åçã«èæ ®â
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/docker/compose/issues/1377#issuecomment-105551631 ã
ããŒã...ã ããã®ãããªãã®ã®ããã«ãïŒããã«ãŒã³ã³ãããæ§æããããã®èšè¿°èšèªã§ããïŒcompose.ymlå
ã®ãã³ãã¬ãŒãèšèªã䜿çšããããã«ãªããŸããææ¡ã§ããcommand
ãšentrypoint
ãã§ã«äž¡æ¹åãå
¥ããã exec
ãšsh -c
ã¹ã¿ã€ã«å€ïŒ ãã³ãã¬ãŒãã®ã¬ã³ããªã³ã°åŸãçµæã®ã·ã§ã«ã³ãã³ãã¯ãããã解éããããããããã¯æ··ä¹±ãæãå¯èœæ§ããããŸãããããã£ãŠãå€æ°ãããŸããŸ*
ã«å±éãããå Žåãããã«globå±éãããŸãã ãã©ãŒã«ã¹ã«ãŒè§£éã®ãã®å€ãã®å±€ãããå ŽåãããèšèªãŸãã¯å¥ã®èšèªã§ã·ãŒã±ã³ã¹ããšã¹ã±ãŒãããããšã¯ããªãããŒã«ãªããŸãã
@kojiromikeç§ã¯ç¢ºãã«ãã³ãã¬ãŒããšã³ãžã³ãæãŸããŠãªããã ãã©ãããã¯ã å Žåã¯ã䜿çšããŸãïŒ ããç¥ãããŠãããã®ã䜿çšããæ¹ãããã§ãããã åºæ¬çãªè³ªåã¯æ¬¡ã®ãšããã§ãã docker-composeã¯ã眮æfrom-scratchãæžã蟌ãããæ¢åã®ãã®ã䜿çšããå¿ èŠããããŸãã
ç«ã2015幎5æ26æ¥ã«ã¯ã11ïŒ02 AMã¯ãªã¹ããWitzany [email protected]
æžããŸããïŒ
@aanandç§ã¯ããªãã®
æ§æDSLã®ç°¡æœãã
ãã¶ããããã¯å€éšãããžã§ã¯ããšããŠè¡ãããã¹ãã ããšã¡ã¿ã³ã³ããŒã¶ãŒã¯èšãã ãã
compose.tpl.ymlãšvariables.ymlãåãåããdocker-compose.ymlãäœæããŸã
ãããŠãç§ãã¡ã¯è¡ããŸãã
ããªãã¯ä»æ¥ãæ°ãããããžã§ã¯ããªãã§ãããè¡ãããšãã§ããŸãã ãžã³ãžã£ã¯ãã£ãšã§ãã
ã©ããããããã³ãã³ãã©ã€ã³ããåŒã³åºãããŸãã å人çã«ã¯envsubstã䜿ãã ãã§ã
ã³ãã³ãã
æ¬åœã«åœ¹ç«ã€ã®ã¯ãcomposeãstdinãããã¡ã€ã«ãèªã¿åãããšãã§ãããã©ããã§ãã
ããã«ãããäžéãã¡ã€ã«ãäžèŠã«ãªããŸãã
@tonnzorã瀺ããããã«ãtã¯Pythonã³ãŒãã®å°ããªæçã§å®è¡ã§ããŸãã
ããã¯ããããå¿
èŠãšããªã人ã
ã«åŒ·åãªãã³ãã¬ãŒããæäŸããŸã
åçŽãªã¿ã¹ã¯ã«è€éããå°å
¥ããŸãã
2015幎5æ26æ¥ç«ææ¥ååŸ4æ52åãSebastiaan van Stijn <
[email protected]>ã¯æžããïŒ
ãã³ãã¬ãŒãã次ã®å Žåãç§ã¯_generic_ãã³ãã¬ãŒããœãªã¥ãŒã·ã§ã³ã䜿çšããããšã«+1ããŠããŸã
èæ ®ãããŸãã äŸïŒ http ïŒ
èšèªã ããã¯åãªãäŸã§ãããä»ã®ãã³ãã¬ãŒããšã³ãžã³ã¯
åçã«èæ ®ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/docker/compose/issues/1377#issuecomment-105551631 ã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/docker/compose/issues/1377#issuecomment-105554730 ã src = "
https://ci6.googleusercontent.com/proxy/iSBXyl7D8PwFM4p1mGPHCR7bQctunieGbhyGkvo0QIMIjmAYE3I0Mt96yl1fGrqcuOzxV4APP8ZRIw-5_qd6nzps9Mpr6jTAydCC4xs8JDgqm93aIbWvN1eMlxykrz7iwYooyAQdqL4RFJokeEbnBkZm5mhgKg=s0-d-e1-ft#https://github.com/notifications/beacon/AAGAUO8xqz29B2SUoG7QFPUy848_JJW9ks5oNIJlgaJpZM4EMysO.gif
">
stdinãããã¡ã€ã«ãèªã¿åãããã®+1ã å€éšãã³ãã¬ãŒããœãªã¥ãŒã·ã§ã³ã䜿çšããŠãåé¡ã¯ãããŸããããäžéãã¡ã€ã«ããªãæ¹ãããã§ãããã
ããã¯çŽ æŽãããæåã®ã¹ãããã®ããã«èãããå€ãã®CLIããŒã«ã«å ±éã®æ©èœã§ãã ãããããŸããã
ïŒ+1ïŒ
ã ããäŸãã°
envsubst compose.tmpl.yml | docker-compose -f - up -d
wfmã ïŒ+1ïŒ
docker / distributionãç°å¢å€æ°ãä»ããŠymlãã¡ã€ã«ã®å€ã®ãªãŒããŒã©ã€ããåŠçããããšã«æ°ã¥ããŸããããå¥ã®ã¢ãããŒãã䜿çšããŠããŸãhttps://github.com/docker/distribution/blob/master/docs/configuration.md#override -configuration-options
^^ @aanand
@thaJeztahãããç§ãã¡ã®ããã«åãã§ãããã 次ã«ãç°å¢å€æ°ã䜿çšããŠã³ãã³ãããªãŒããŒã©ã€ãã§ããŸã
DOCKER_COMPOSE_IMAGE_NAME='my_image:is_dynamic'
èå³æ·±ãã¢ãããŒãã§ãããç§ã¯ãã¡ã³ã§ã¯ãããŸãã-åé·ãªç°å¢å€æ°åãè€æ°ã®å Žæã§1ã€ã®å€ã䜿çšããå Žåã¯å€ãã®éè€ããã¹ãŠãæé»çã§ãæååå ã®è£éã¯ãããŸããã
@aanandããã®ã¢ãããŒãã§å®éã«å£²ããããã§ã¯ãããŸãããããDockerãçµç¹å ã®å¥ã®ãããžã§ã¯ãã§ããããããããææããããšæããŸããã
https://github.com/kelseyhightower/confdã«å¶ç¶åºããããŸããããããã¯èå³æ·±ããããããŸããã http://golang.org/pkg/text/template/#pkg-overviewã䜿çšã
@olalondeæ®å¿µãªããã
@aanandç§ã¯ããªãã®å ã®ææ¡ã«+20ã§ãããç»åãç¹ã«ã¿ã°ã§ããæ³šå ¥ã§ããããã«èª¿æŽããŠããŸãã ãã ããã®ããã«è¡ã£ãŠãã ãããç§ãã¡å šå¡ã«ããããã®ã©ãããŒãšäžå¿ èŠãªæ§æåŠçãç¯çŽããã§ããã;ïŒ
ç§ã¯ãããå©ããå°ããªPythonããã±ãŒãžãæžããŸããã èšç»ã§ã¯ããã¹ãŠã®ã³ãã³ããdocker composeã«ãã³ããªã³ã°ããŠãåçã«äœ¿çšã§ããããã«ããŸãã
https://github.com/webcrofting/meta-compose/ã§ãã§ãã¯ããŠ
ã¡ã¿ã³ã³ããŒãºã¯æ¬åœã«çŽ æµã«èŠããŸãã docker-composeã«çµ±åããå¿ èŠããããŸãïŒ
ããã§å€§ããª+ 1-ãã³ãã¬ãŒãã®ååŠçã«ã¯è奮ããŠããŸããããç°å¢å€æ°ãäœããã®æ¹æ³ã§ãã«ããã®ã¯çŽ æŽãããããšã§ãã POSIXæ¡åŒµã¯ããããJinja2ãããã¯ãªãŒã³ã§ãããã©ã¡ãã®æ¹æ³ã§ãåé¡ãããŸããã
ãããããããã°+1ã ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯ãããŒã¿ã®ãããã¥ãŒãµãŒïŒä»ã®ã³ã³ãããŒã§ããå¯èœæ§ããããŸãïŒã«ãšã£ãŠäžå¯æ¬ ãªkafkaã³ã³ãããŒã®åçåºåIDãµããŒããè¿œå ããããã®ãã®ã§ãã
ãã®æ©èœã«ãã¯ã¯ã¯ã¯ããŠããŸãã
POSIXæ¡åŒµã¯ããããJinja2ãããã¯ãªãŒã³ã§ãããã©ã¡ãã®æ¹æ³ã§ãåé¡ãããŸããã
POSIXæ¡åŒµãæ¯æãããã1ã€ã®è°è«ã¯ãããžãã¯ããªããšããããšã ãšæããŸãã Jinja2ã¯ãããçšåºŠã®æ¡ä»¶ä»ã/ã«ãŒãããžãã¯ããµããŒãããŠããŸãïŒã»ãšãã©ã®ãã³ãã¬ãŒããšã³ãžã³ããµããŒãããŠããããã«ããããžãã¯ã¬ã¹ããšäž»åŒµãããã®ããµããŒãããŠããŸãïŒã ãã³ãã¬ãŒãããžãã¯ãšYAMLãçµã¿åãããã®ã¯ãç§ã®çµéšã§ã¯ããªãå¥åŠã§ãã 誰ãããã®ãããªããžãã¯ã®ãŠãŒã¹ã±ãŒã¹ãèããããšãã§ããŸããïŒ ããã§ãªãå Žåã¯ãä»ã®ãšããç¹ã«ãµããŒããé¿ããã®ãæåãããããŸããã
ãã®æ©èœã«ã€ããŠéçºè ããæ確ãªåçãããã°ããã®ã§ããã ããŸããŸãªåé¡ãPRãèªãã§ãæ¬åœã«ãããå®è£ ããããã©ããã¯æ確ã§ã¯ãããŸããã
ãããããªããã©ã®ãããªã¡ã«ããºã ã§ïŒ ããããªããšãæ©èœã管çããããã®ãµãŒãããŒãã£ããŒã«ã®æ§ç¯ãéå§ããå¯èœæ§ããããŸãã
ããããšãããããŸãã ïŒ
ããããŸãããhttpsïŒ//github.com/docker/compose/pull/76ãèŠãŸãã
ãªã³ã¯ãããåé¡/ PRãæ°ãµã€ã¯ã«æ©ããŸããã
AFAIKãnginxã³ãã¥ããã£ã¯ãåçŽãªå€æ°çœ®æã§ãã£ãŠããæ§æãã¡ã€ã«ã«ãã³ãã¬ãŒããšã³ãžã³ãæ¡çšããããšãæåŠããŸããã ã©ãããŠïŒ ãã¶ãã圌ãã¯ãŸã çæ³çãªãã³ãã¬ãŒããšã³ãžã³ãéžæããŠããŸãïŒ
@hadim
ããŸããŸãªåé¡ãPRãèªãã§ãæ¬åœã«ãããå®è£ ããããã©ããã¯æ確ã§ã¯ãããŸããã
ãã®åé¡ã¯ããã®è³ªåã«å¯Ÿãã決å®çãªçããæäŸããã¯ãã ã£ãã®ã§ãã¯ã£ããããªãã£ãã®ã¯æ®å¿µã§ããã¯ããå®è£ ããããšæããŸããPOSIXã¹ã¿ã€ã«ã®æ§æã䜿çšããŸãã
ããããšã@aanand ïŒ
ããããšãã@ aanandã
ç§ã«ãšã£ãŠã¯+1ã --dns =ïŒdocker0ããªããžã®ã¢ãã¬ã¹ïŒãæž¡ãå¿ èŠããããŸãããããå°æ¥ã®ããŒãžã§ã³ã®dockerã§å€æŽãããå Žåã§ãæ©èœããå¿ èŠããããããç°å¢å€æ°ãã·ã§ã«ã¯å®ç§ã§ãã meta-composeã¯ãããŒã«ã«ã ãã§ãªãããªã¢ãŒãã®DOCKER_HOSTããµããŒãããå¿ èŠããããããããšãã°docker-swarmãä»ããŠæ©èœããŸããã
ïŒ+1ïŒããã¯ãšãŠãããã§ãããã çŸåšãå¥ã®ã¹ã¯ãªãããä»ããŠ.ymlãã¡ã€ã«ãçæããããdocker-composeããŸã£ãã䜿çšãããæåã§dockersããªã³ã¯ããŠããŸãã
ïŒãããïŒ
åºæ¬çãªç°å¢å€æ°ã®è£éã¯ãåçŽãªããšã«ã¯éåžžã«åœ¹ç«ã€ãšæããŸãã
ããã€ãã®ç°¡åãªãŠãŒã¹ã±ãŒã¹ïŒ
Ansibleã®ãããªããŒã«ã¯ãã§ã«ãã³ãã¬ãŒããããŸãäœæããŠããã®ã§ãå®å šãªãã³ãã¬ãŒããšã³ãžã³ãå¿ èŠãã©ããã¯ããããŸããã ãã ããcomose.ymlãã¡ã€ã«ã«åçã³ã³ãã³ããå«ããããšãã§ããªãããšã¯éåžžã«å¶éãããŸãã
ããŒãžãããPRïŒ1488ã«é¢ããŠãç§ã¯èšå®ãã¡ã€ã«ãdocker-compose
ã«ãã€ãããããšã«ç¹ã«èå³ããããŸãã docker-compose
ãããŒãããã»ã¹ããååŸã§ããªãçç±ãããããŸããã
var spawn = require('child_process').spawn;
var compose = spawn('docker-compose', ['--file' + '-' + 'up']);
compose.stdin.setEncoding = 'utf-8';
compose.stdout.on('data', function (data) {
console.log('"docker-compose --file - up" stdout: "%s".', data);
});
compose.stderr.on('data', function (data) {
console.log('"docker-compose --file - up" returned an error: "%s".', data);
});
compose.on('close', function (code) {
if (code !== 0) {
console.log('"docker-compose --file - up" existed with an erroneous code: "%s".', code);
} else {
console.log('"docker-compose --file - up" existed with code: "%s". SUCCESS!', code);
}
});
compose.stdin.write("redis: {\"image\": \"redis\"}\n");
compose.stdin.end();
Node.jsããããŒã¿ããã€ãããæ¹æ³ã®äŸã¯ãããŸããïŒ
ç§ãèŠã€ããããäžã€ã¯ããšããããšã§ãdocker-compose
1.4.0-RC1ã®ãããªããã€ãã®äžèŠéåžžã®ã¡ãã»ãŒãžãéä¿¡ããŠããStarting...
ãŸãã¯Attaching...
ã«stderr
ã®ä»£ããã«stdout
ã
@kadishmalãããã«ã€ããŠåå¥ã®åé¡ãéããŠ
å¥ã®åè£æ§æ/å®è£ ïŒ PEP 0292ã§æå®ããã string.Templateã§å®è£ ãããŠããPythonã®æååãã³ãã¬ãŒãã
ããã¯ãPOSIXãã©ã¡ãŒã¿ãŒã®æ¡åŒµãšéåžžã«ãã䌌ãŠããŸãã
$foo
ã¯foo
å€ã«å±éãããŸã${foo}
ã¯foo
å€ã«å±éãããŸã$
ã ${
ã $}
ã ${}
ã ${foo
ã $ {foo}
ã ${ foo}
ã ${foo }
ã¯ãšã©ãŒã§ãæ¬ ç¹ïŒ
$$
代ããã«\$
ãããã¯å®éã«ã¯å€è£
ããç¥çŠãããããŸãããYAMLã¯\$
奜ãã§ã¯ãªããããã«ãšã¹ã±ãŒãããå¿
èŠããããŸãã ãã«èšå·ãååŸããããã ãã«\\$
ãšå
¥åããããã«äººã
ã«æ瀺ããããšã¯ãããŸããããªããšæããŸãã
ïŒ1765ã§å®è£ ãæ¥å¢ãããŸããã
+1
ãããé©åãªå Žæãªã®ãããããšãæ°ããåé¡ãäœæããå¿ èŠãããã®ãââããããŸããã
envã®åªå é äœã¯éã§ããå¿ èŠããããšæããŸããã€ãŸããdocker-composeãåŒã³åºãã·ã§ã«ã®å€æ°ã¯ãdocker-compose.ymlå ã®å€æ°ããªãŒããŒã©ã€ãããå¿ èŠããããŸããããã«ãããã³ã³ãããŒã«ãã£ãŠå®çŸ©ãããå€æ°ããªãŒããŒã©ã€ããããŸãã
ãããç§ããããè©Šãããšãã«çŸåšèµ·ãã£ãŠããããšã§ãïŒ
docker-compose.ymlïŒ
test:
image: ubuntu
environment:
- FOO="from compose"
次ã«ã env
ã³ãã³ãã§å®è¡ããŸãã
docker-compose run test env | grep FOO
äºæ³éãã FOO="from compose"
ãäžããŸãã ããããã®åŸïŒ
FOO="from shell" docker-compose run test env | grep FOO
FOO="from compose"
ãäžããŸãããããã§ã¯FOO="from shell"
æåŸ
ããŠããŸããã
ä»ã®ãŠãŒã¹ã±ãŒã¹ã§ãå€æ°è£éãå¿
èŠãªå ŽåããããŸããããããå€æŽãããšãããã©ã«ããã®ã±ãŒã¹ãæºããããŸããäºå®äžãdocker-compose.ymlã®environment:
å®çŸ©/å€ãããã©ã«ãã§ããããªãŒããŒã©ã€ãã§ããŸããå¿
èŠã«å¿ããŠå®è¡æã«ãè¿œå ã®YAMLæ§æã¯å¿
èŠãããŸããã
@fazy env
ã³ãã³ããFOO
ã®å€ãfrom compose
ã§ããåé¢ãããtest
ã³ã³ããã§å®è¡ãããããšãèæ
®ããŠããŸããfrom compose
ïŒã¡ããã©ããã¹ã姿ã§ããã docker-compose
ãã¡ã€ã«ã§æ§æãããdocker-compose
ããã»ã¹ã«ãã³ãã³ãã®åã«èšå®ããç°å¢å€æ°ã®äœããã®å°å·é¢æ°ãããå Žåããã·ã§ã«ãããåºåãããŸããããã¯ããã¹ãã®å€ã§ããããã§ããããªãããããå®è¡ããŠããdocker-compose
ããã»ã¹ïŒã ãã®å Žåã FOO
å€ãfrom shell
ã«ãªãããšãæåŸ
ããŠãããããããŸããããå人çã«ã¯ãããã ãšãããããªãé©ããŸãã ïŒç§ã®è±èªã«ãããããããããªããç§ã®ãã€ã³ããç解ããŠãããããšãé¡ã£ãŠããŸãïŒã
@smileartããããšããç§ã¯ããªããèšã£ãŠããããšãããããšæããŸãã
ãã ãã test
ã³ã³ãããŒã¯å®å
šã«åé¢ãããŠãããã docker-compose
ããç°å¢ãååŸãïŒãŸãã¯ãå°ãªããšããdocker-composeã¯èµ·åãããã³ã³ãããŒã«ç°å¢å€æ°ãèšå®ã§ããŸãïŒãdocker-composeããèªäœããå€éšãç°å¢å€æ°ãèŠãããšãã§ããŸãã
ãã®docker-compose.ymlã§èŠãããšãã§ããŸãïŒ
test:
image: ubuntu
environment:
- FOO
次ã«ãã³ãã³ãïŒ
FOO="from shell" docker-compose run test env | grep FOO
確ãã«ãã·ã§ã«ãããã®çµæãåŸãããŸãã
ã ããç§ã®è³ªåã¯åªå
é äœã«ã€ããŠã§ãã ããã§å€æ°å- FOO
æå®ããã ãã§ãå€éšããå€æ°ãæ¿å
¥ã§ããŸãã ãããã - FOO=something
ãæå®ããå€éšããå€æ°ãæ¿å
¥ããå Žåãã©ã¡ããåªå
ããå¿
èŠããããŸããïŒ IMHOã³ãã³ãã©ã€ã³ã§æå®ãããå€æ°ã¯ãæ§æãã¡ã€ã«ãããåªå
ãããå¿
èŠããããŸãã
@fazyããããã¿ãŸããã docker-compose.yml
å€ãæå®ããã«FOO="from shell" docker-compose run test env | grep FOO
ãè©Šããããšããªãããã¹ãã®FOO
å€ãåŸãããããšãç¥ããŸããdocker-compose
åã«ç°å¢å€æ°ãèšå®ãããšã docker-compose
ãšdocker-compose
ã®ã¿åœ±é¿ãäžãããšæããŸãããã³ã³ããã ä»ãç§ã¯ããªããäœãæå³ããã®ãããããŸãã
https://github.com/docker/compose/issues/1377#issuecomment -124571722ã«èšèŒãããŠãã$
ããšã¹ã±ãŒãããããšã®æ¬ ç¹ã«ééããŸããã æåã«FOO=ba$e
ã次ã«FOO='ba$e'
ïŒãããåºããã«ãªã£ãŠããããšãå¿ããŠïŒã次ã«FOO=ba\$e
ã次ã«FOO=ba\\$e
ã次ã«ãããããŠããã¥ã¡ã³ããã $
ã¯$
ã®ãšã¹ã±ãŒãæåãã§ããããšã«é©ããŠããŸãã ç§ã«ãšã£ãŠãããã¯ç¹ã«ãé©ãæå°ã®ååãã§ã¯ãããŸããã§ããã
ããããç§ã¯è¯ã解決çãäœã§ãããããããŸããã
@ CT-clearhausäœæ²ã䜿çšããå¯äžã®ããã°ã©ã ã§ã¯ãããŸãã$
ãšã¹ã±ãŒãããããã«$
ã ããã¯makefileã«ããããŸãã ãããã£ãŠãäžéšã®äººã
ã«ãšã£ãŠããã®ã€ãã£ãªã ã¯éåžžã«ããç¥ãããŠããŸãã
ç§ã¯æ¢åã®å€æ°çœ®æã®å®è£ ã倧奜ãã§ãã ãã ãã @ aanandã®å ã®ææ¡ã«åŸã£ãŠãããã©ã«ããèšå®ããæ©èœãå®éã«äœ¿çšã§ããŸããã POSIXæ§æã¯å®ç§ã ãšæããŸãã
${ENV-default}
ç§ã®å ·äœçãªäœ¿çšæ³ã¯ããµãŒãã¹ãå®è¡ããããã¹ãããŒããæå®ã§ããããã«ããããšã§ãã
PORT=8123 docker-compose up
ãããç§ã®docker-compose.yml
è¿œå ããããšã«ãã£ãŠïŒ
web:
ports:
- "${PORT-8000}:5000"
ãã®æ©èœã¯ãŸã èšç»äžã§ããããã€ãã©ã€ã³ã«ãããŸããïŒ
extendsã§åé¡ã解決ããããšããŸããdocker-compose.yml
ã»ãŒãã¹ãŠãè€è£œããå¿
èŠããã£ãã ãã§ãªããå
¬éãããããŒãèšå®ã_å€æŽ_ããæ¹æ³ããããŸãããå
¬éãããããŒãã®ãªã¹ãã¯add to
ããã§ããŸãããç§ã«ã¯çæ³çã§ã¯ãããŸããã
ç°å¢å€æ°ãèšå®ãããŠããªãã®ã«docker-composeã倱æããªãã®ã¯ãªãã§ããïŒ èŠåããã°ã«èšé²ããŠç¶è¡ããŸãã ãã æ»ãã ãã§ãªãããšã©ãŒãããè¯ãã¢ãããŒãã«ãªãã§ããã...
WARNING: The FOO variable is not set. Defaulting to a blank string.
ããã©ã«ãå€ã宣èšããããã®POSIXæ§æã®å Žåã¯+1
æãããªäœããæ¬ ããŠãããããããŸããããenv_fileã®ç°å¢å€æ°ã䜿çšããŠãç°å¢å€æ°ã®å€ãèšå®ã§ããããã«ããããšæããŸããäŸïŒ
docker-compose.envïŒ
DB_PASSWORD=test
docker-compose.yamlïŒ
...
service:
database:
env_file:
- ./docker-compose.env
environment:
- MYSQL_PASSWORD=${DB_PASSWORD}
webserver:
env_file:
- ./docker-compose.env
environment:
- WORDPRESS_DB_PASSWORD=${DB_PASSWORD}
ããã¯ä»ã®æ¹æ³ã§éæã§ããŸããïŒ envsubstãä»ããŠãã€ãããå¿ èŠãããyamlãã³ãã¬ãŒããã¡ã€ã«ã¯å¿ èŠãããŸããã
ãã®å€ãenv_file
çŽæ¥å¥œããªããã«å
¥ããŠã¿ãŸãããïŒ
ã€ãŸãã2ã€ã®å Žæã§åãå€ã§ãªããã°ãªããªãå€æ°ãããããšãæå³ãã1ã€ã ããå€æŽããå¿ èŠãããå Žåã«ç°¡åã«ãªããŸãã ïŒ2636ã¯ææã«èŠããŸãã
æ¢åã®å¶éã«ãããdocker-composeãæ¯æŽããã©ãããŒã¹ã¯ãªããã䜿çšããå¿
èŠããããããããã©ã«ãå€æ°ããµããŒãããã¡ã«ããºã ãåå®ã«å¿
èŠã§ãã åäœããã«ã¯NODE_ENV=${NODE_ENV:-dev}
ãããªãã®ãå¿
èŠã§ããã䟿å®äžã SOME_NUMBER=$((96*60))
ãåäœããã®ãããã§ãããã ããã¯æ¬¡ã®ããŒãžã§ã³ã§äºå®ãããŠããŸãããïŒ
ããã©ã«ãå€ã®å Žåã¯+1
ããã©ã«ãå€ã®å Žåã¯+1ã ããã¯ç§ãã¡ã«ãšã£ãŠéèŠã«ãªãã€ã€ãããŸãã
@ darkn3rdã«åæã
ç§ã«ã§ããã°ïŒ
user: $((id -u)):$((id -g))
ããã¯ç§ã®åé¡å šäœã解決ããŸã
@mgor envsubst
ééã§ããããã«èãããŸããïŒ
env $(cat docker-compose.env | xargs) envsubst < docker-compose.tmpl > docker-compose.yml
ïŒæ°žç¶çãªç°å¢ãæ±æããããšãªãïŒãããè¡ãã¹ãã ãšç§ã¯æããŸãã
@OJFord @mgorã¹ã¬ããããã€ãžã£ãã¯ããã€ããã¯ãããŸããããã¯ãŒã¯ãããŒãããã¯ãªãŒã³ã«ããããã«ããã€ãã®CLIããŒã«ãäœæããŸããã envsetããã³slv ã
envset development -- slv docker-compose.tpl > docker-compose.yml
envsetã¯envãã¡ã€ã«ããçŸåšã®ã·ã§ã«ã»ãã·ã§ã³ã«å€æ°ãããŒãããslvã¯ç°å¢å€æ°ã䜿çšããŠãã³ãã¬ãŒãã眮ãæããŸãã
@OJFordã«åæã
æ£ç¢ºã«èšããšãç§ãã¡ã¯ããŸããŸãªdocker-composeã¹ã¿ãã¯ã䜿çšãã40人ã®éçºè
ã®ããŒã ã§ãã ã³ãŒããååŸããããã«gitã䜿çšããŠããŸãã
gitã«ãã£ãŠé ä¿¡ãããdocker-compose.ymlãå€æŽããããã«äŸé Œããå Žåã誰ããå€æŽãããdocker-compose.ymlãã¡ã€ã«ãããã·ã¥ãããšç¢ºä¿¡ããŠããŸã...ä¿¡é ŒããŠãã ããã
gitã«ãã£ãŠç¡èŠãããdocker-compose.ymlã«ãã£ãŠæ¡åŒµããããããŒã¹ã³ã³ããŒã¶ãŒãã¡ã€ã«ãçæãããããšã¯ã§ããŸããããããçæããã«ã¯ãMakefileãŸãã¯bashscriptãäžããå¿ èŠããããŸã...ãããŒã¹ããæ¥ãæ¥ãæ¥ãã§ãããã docker fileãã®å€æŽãå¿ èŠã«ãªããããŒã ã¯çæãåå®è¡ããå¿ èŠãããããšã«æ°ã¥ããŸããã
ãenvããã¡ã€ã«ã«ã€ããŠãåãã§ããããã¯éåžžã«äŸ¿å©ã§ããããbuildãã§ã¯æ©èœããªããããããŒã ã«ãã®ãã¡ã€ã«ãçæããããã«äŸé Œããå¿ èŠããããŸãã
å®éãdocker-composeãyamlãã¡ã€ã«ã®bashïŒãŸãã¯ENVå€æ°ä»¥å€ã®ãã®ãè¿ãä»ã®ãœãªã¥ãŒã·ã§ã³ïŒããå€ãååŸã§ããå Žåãå€ãã®ããŒãºã解決ãããŸãã
åã®ã³ãã³ãã®äŸã¯å®ç§ã§ãããŠãŒã¶ãŒIDãšgidãååŸããå¿ èŠãããããããã®å€ã¯ENVå€æ°ã«ãã£ãŠèšå®ãããŸããã ãã®ãããããŒã ã«IDã.envãã¡ã€ã«ã«æžã蟌ãããã«äŸé Œããå¿ èŠããããŸã...ç§ãšããªãã«ãšã£ãŠã¯ç°¡åã§ããããã¹ãŠã§ã¯ãããŸããã
æ£ç¢ºã«èšããšãgitãªããžããªã«ãããããããŒã ãå€æŽããŠã¯ãªããªãdocker-composeãã¡ã€ã«ãæäŸããå¿ èŠããããŸãã
ãã®ãã«ãªã¯ãšã¹ãã¯ãç§ã«ãšã£ãŠæå¹ãªç°¡åãªäŸã§ãã å€åããªãã¯ç§ãããè¯ãããã®ãæäŒã£ãŠãããã§ãããã
docker-compose.ymlãã¡ã€ã«ã®ç°å¢ãã£ã¬ã¯ãã£ããšãŠãŒã¶ãŒãã£ã¬ã¯ãã£ããè©ŠããŠã¿ãŸããã ä»ã®ãšããããŸãæ©èœããŸãã
ããã©ã«ãå€ãããã«ããã¯ãã§ã...éåžžã«äŸ¿å©ã§ã...éçºè ãšOPSã¯dockerãã°ãŸãã¯syslogã®ããããã䜿çšããŠããŸã...ãããã£ãŠãéåžžã以äžã«ç€ºãããã©ã«ãã®LOG_FORMATãäœæããå¿ èŠããããŸã...ããã©ã«ãå€ã䜿çšããããšãã§ããŸããããŠsyslogã«åãæ¿ãããšãã«ã®ã¿äœ¿çšããŠãã ãã...
default:
extends:
file: base.yml
service: base-${LOG_FORMAT:docker}
labels:
- "net.company.npmjs.datacenter=${DATA_CENTER}"
- "net.company.npmjs.env=${ENV}"
- "net.company.npmjs.hostname=${HOSTNAME}"
- "net.company.npmjs.role=${NPMO_ROLE}"
- "net.company.npmjs.log=${LOG_FORMAT}"
base-syslog:
log_driver: syslog
log_opt:
tag: "{{.ImageName}}/{{.Name}}/{{.ID}}"
base-docker:
log_driver: json-file
log_opt:
max-size: "128m"
max-file: "4"
ããã¯ãã€å©çšå¯èœã«ãªããŸããïŒ ç§ã¯Compose1.7.0ã䜿çšããŠããŸãããããã¯ãŸã ãããŸãã:(
ããã©ã«ãå€ãæããŠãã ããïŒ
@marcellodesales ïŒãããããäœããã®æ¹æ³ã§docker-compose.override.yml
ãã¡ã€ã«ã䜿çšããããšãå©çšã§ããŸãã ãã®æ©èœã確èªããŠãã ããã
ãŸããenvå€æ°ã§+1ããŸãã ããã¯ãdocker-composeã®æè¿ã®å€§ããªåé¡ç¹ã§ãã
ãã¹ãããç¹å®ã®å€ãååŸã§ããããã«ãPRïŒ3367ãèŠæ±ããŸãã :)
@pataquetsããã«ä»ã®ãªãŒããŒã©ã€ããã¡ã€ã«ãäœæããããšã¯æããªã...äžèšã®ããã«ã base.yml
ãã¡ã€ã«ã«ã¯ããã¬ãŒãã©ã€ããŒãªã©ã®èŠ³ç¹ãããµããŒããããŠãããã¹ãŠã®ãã®ã衚瀺ãããŸã...åãæ¿ãããã ãã§ãããã©ã«ãå€ããããŸãã ããã«å€ãã®ymlãã¡ã€ã«ãç¶æããå¿
èŠããããšæããŸãã ãã ãã念ã®ãã念é ã«çœ®ããŠãããŸãã
+1
+1
+1
+1
docker-composeã§ã®ç°å¢å€æ°ã®äœ¿çšã«é¢ããéç¥ã¯ãããŸããïŒ
+1
+1
åèïŒdocker-composeã®ç°å¢å€æ°ã¯1.7.0以éã§åäœããŸãã ã«ãŒãdocker-compose.yml
ãã¡ã€ã«ãšåããã£ã¬ã¯ããªã®.env
ã«docker-composeã®ããã©ã«ãå€æ°ãèšå®ããããšãã§ããŸãã ããã¯å¥ã®ããšãªã®ã§ãDockerãšã³ãžã³ã®envfilesãšæ··åããªãã§ãã ããã
ãµãŒãã¹åãå€æ°ãšããŠèšå®ããæ¹æ³ã¯ãããŸããïŒ
ãããæžã代ããã«
services:
site_db:
image: mysql:5.7
ç§ãã¡ã¯æžãããšãã§ããŸã
services:
${CONTAINER_NAME}:
image: mysql:5.7
ç§ã®ç®æšã¯ãè€æ°ã®ãµã€ãã§åãdocker-compose.yml
ãç¶æãã .env
ãã¡ã€ã«ã®ã¿ãå€æŽããããšã§ãã åããã¹ãã§è€æ°ã®ã¢ããªãå®è¡ããŠãããããçŸæç¹ã§ã¯ã³ã³ããåãå€æŽããå¿
èŠããããŸãã ãŸããããããããããããã«ãåãµãŒãã¹ã«ç¬èªã®ååãä»ããããšæããŸãã
䜿çšã§ãã@LouWii
services:
site_db:
container_name: "${CONTAINER_NAME}"
image: mysql:5.7
ãŸãã¯ïŒcompose-file format 2.1以éïŒ
services:
site_db:
container_name: "${CONTAINER_NAME:-defaultname}"
image: mysql:5.7
ãããããããžã§ã¯ãåãèšå®ããŠã¿ãŸãããïŒ ãããžã§ã¯ãåã¯ãåããã¹ãäžã®ä»ã®ãããžã§ã¯ããšã®ç«¶åãé²ãããã«äœæãããã³ã³ããåã®ãã¬ãã£ãã¯ã¹/åå空éã§ããããããã®ããã«_æå³ããã_ã§ãã https://docs.docker.com/compose/reference/envvars/#/composeprojectnameãåç §ããŠ
@thaJeztahããããšãïŒ Dockerãšdockerã®æ§æãã©ã®ããã«æ©èœãããããŸã åŠãã§ããŸãã ãããžã§ã¯ãåãèšå®ããæ¹ãè¯ããªãã·ã§ã³ã®ããã§ãããç§ã®äœ¿çšã§ã¯å®å šã«çã«ããªã£ãŠããŸãã
è£éãããäžæ¬åŒ§å
ã§ã¹ã¯ãªãããäœæããæ¹æ³ã¯ãããŸããïŒ ããšãã°ã ${HOST_PORT + 1}
ã§ãã
Jinjaãªã©ãä»ããŠãã¡ã€ã«ããã€ãããããšãã§ããŸã...
2017幎1æ24æ¥ç«ææ¥ãåå5æ36åSam A.Horvath-ãã³ã[email protected]
æžããŸããïŒ
è£éãããäžæ¬åŒ§å ã§ã¹ã¯ãªãããäœæããæ¹æ³ã¯ãããŸããïŒ ããšãã°ã$ {HOST_PORT
- 1}ã
â
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/docker/compose/issues/1377#issuecomment-274767368 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAGAUN5ZrU39dnVVVASwIHr5mGqJFxh3ks5rVdRIgaJpZM4EMysO
ã
$
ãè±åºã§ããŸããïŒ
environment:
PATH: "$PATH:/home/appuser/.bundler/bin"
çŸåšãããã«ãããã³ã³ããã§ã¯ãªãããã¹ãã®PATHå€æ°ãè£éãããŸãã
docker-compose.ymlãã¡ã€ã«ã¯1ã€ã ãèŠã€ãããŸãããïŒ
ã©ãããã°è¿œå ãŸãã¯å€æŽã§ããŸããïŒ
åãã£ãŠæè¬ããŸã
@logicmindsã©ãã«ãææžåãããŠãããã®ã¯èŠã€ãããŸããã§ãããã $$
ãšã¹ã±ãŒãããã$
è£éãããŠããããšãããããŸããã
environment:
PATH: "$$PATH:/home/appuser/.bundler/bin"
@elquimistaã«ã¯ã䟿å©ã ãšæã£ã解決çããããŸãhttps://github.com/mhart/alpine-node/issues/48#issuecomment -430902787
æãåèã«ãªãã³ã¡ã³ã
ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯ã
volumes
ã§$PWD
ãèš±å¯ããããšã§ããããã«ãããããŒã å ã®ãã¹ãŠã®éçºè ã¯ãã©ãã«ã§ããªããžããªãè€è£œã§ãããã¹ã¯æ£ããããŠã³ããããŸãã