ããã«ã¡ã¯ãã¡ããã¢CTO室 SREã®ä¾ç¾(ããã¿)ã§ãã
æ®æ®µã¯Rails/Vue.js/terraform/Lambdaãªã©ãæ¸ãã¦ãã¾ãã
趣å³ã¯é£¼ãç«ã¨éã¶ãã¨ã§ãçå·ã絶ãã¾ããã
å ¥ç¤¾ãã¦ããç´åå¹´éãRailsã®ããã¸ã§ã¯ãã§å®è£ ããã¤ã¤ãåéã«éçºç°å¢ã®æ¹åãããããã¨ãã£ã¦ãã¾ããããã£ãããªåéã¨ãªã£ãã®ã§ãç´¹ä»ãããã¨æãã¾ãã
ãªããæ¬è¨äºã§æ±ãéçºç°å¢ã¨ã¯ä¸è¨2ã¤ãæããã¨ã¨ãã¾ãã
- ã½ã¼ã¹ã³ã¼ãã®ä¿®æ£/ãã¹ãã®å®è¡/éç解æã®å®è¡ç°å¢
- ãµã¼ãã¹ãèµ·åãããã©ã¦ã¶ã§ãããã°ããç°å¢
ç¹å¾´
主ãªæ¹å対象ã§ããããMedPeerããµã¼ãã¹ã®ç¹å¾´ããç´¹ä»ãã¾ãã
- Ruby on Rails製
- 社å ã§ã¯æã巨大ãªRailsããã¸ã§ã¯ã
- ã¢ãã«æ°693
- èªè¨¼ãµã¼ãã¹ãæ§ãµã¼ãã¹(PHP製)ã¨é£æºãã¦ãã
- éçºç°å¢ã¯Docker for Macãå©ç¨
- ã³ã³ããæ°ã¯æ§ã·ã¹ãã ãèªè¨¼ã·ã¹ãã ãå ¥ãã¦32å
- ã½ã¼ã¹ã³ã¼ãã¯docker-syncã使ã£ã¦ãã¼ã«ã«ã¨ã³ã³ããå ã§åæ
- RSpecãrubocopã®å®è¡ãã³ã³ããå ã§å®è¡
ã·ã¹ãã æ§æã¨ãã¦ã¯ããã£ããä¸å³ã®ããã«ãªãã¾ãã
課é¡
ç§ãå ¥ç¤¾ããå½æãMedPeerãµã¼ãã¹ã®éçºç°å¢ã«ã¯ä¸è¨ã®ãããªèª²é¡ãããã¾ããã
- é»æ± æ¶è²»ãæ¿ãã
- èµ·åã«æéãããã
- ã¡ã¢ãªæ¶è²»ãæ¿ãã
- èµ·åã«å¤±æããã¨ãããã
- docker-syncãä¸å®å®
- ãã¡ã¤ã«ãåæãããªã
- CPUãé«è² è·ã«ãªã
- ä¾åã·ã¹ãã ã®ã³ã³ãããå¤ã
- Linux対å¿ãã¦ããªããããä¸é¨ãã¹ãç°å¢ã®ã¡ã³ããã³ã¹ãæ¾ç½®ããæ°å³
æ¹åå 容ã®ç´¹ä»
ããã§ã¯ãæ¹åå 容ãé ã«ç´¹ä»ãã¦ããã¾ãã
é»æ± æ¶è²»
éçºç°å¢ãç«ã¡ä¸ãã¦ããã¨é»æ± ãã¢ãªã¢ãªæ¶è²»ããç¶æ
ã§ããã
éçºç°å¢ã®ã³ã³ãã群ãç«ã¡ä¸ãã£ã±ãªãã§ããã¼ãã£ã³ã°ã«åºãã¨ãã ãããã2æéç¨åº¦ã§é»æ± ãåãã¦ãã¾ããããã§ããã
docker stats
ã§CPU使ç¨çãé«ãã³ã³ãããçµãè¾¼ã¿ãtop
ã³ãã³ãã§ããã»ã¹ã®CPU使ç¨çã確èªããã¨ãããSpringã®ããã»ã¹ãCPUã常ã«å©ç¨ãã¦ãããã¨ãç¹å®ã§ãã¾ããã
Springã¯Rails 4.1ããæ¨æºã§ä»å±ããããã«ãªã£ãapplication loaderã§ãã
常ã«ããã¯ã°ã©ã¦ã³ãã§å®è¡ãã¤ã¥ãããã¨ã§ãrails console
ãRSpecã®å®è¡çããã¼ããä¼´ãã³ãã³ãã®å®è¡ãé«éã«ãã¦ããã¾ãã
ããããMedPeerãµã¼ãã¹ã§ã¯ãã¼ã対象ã¨ãªããã¡ã¤ã«æ°ãå¤ããããã常æãããªãã®CPUãæ¶è²»ãã¦ãã¾ããã
Springã«ã¯ãDISABLE_SPRING
ã¨ããç°å¢å¤æ°ãæå®ãããã¨ã§ãç¡å¹ã«ããæ©è½ãããã¾ãã
ãã®ç°å¢å¤æ°ãè¨å®ãã¦ä¸å¾ã§ç¡å¹ã«ãããã¨ãã§ããã®ã§ãããé»æ± æ¶è²»ãããã¹ãã¼ããåªå
ããã¨ã³ã¸ãã¢ãå½ç¶ãã¾ãã®ã§ãä»»æã«è¨å®ã§ããããã«å¯¾å¿ãã¾ããã
medpeer.jpã®éçºç°å¢ã«ã¯direnvãå°å
¥ããã¦ããã®ã§ããããå©ç¨ããåã¨ã³ã¸ãã¢ã®ãã¼ã«ã«ã§æå®ããç°å¢å¤æ°ã«å¿ãã¦ãã³ã³ããå
ã«DISABLE_SPRING
ãå¼ã渡ãããã«è¨å®ãã¦ãã¾ãã
èµ·åãä¸å®å®å¯¾ç
ã¡ã¢ãªæ¶è²»ãå¤ããã¨ããããéçºç°å¢ãè½ã¨ããã¨ãå¤ãã®ã§ãããèµ·åãããã¨ããã¨ãRailsã®èµ·åãä¾åã³ã³ããã®èµ·åã«å¤±æãããã¨ãå¤ã ããã¾ããã
åå ã¯æ§ã ãã£ãã®ã§ããã大åã¯ä¸è¨ã®ããã«èµ·åé åºã«ãããã®ã§ããã
- gemãnpmã®ä¾åã©ã¤ãã©ãªã®ã¤ã³ã¹ãã¼ã«éã§èµ·åé åºãå¤ãã£ã¦ãã
- DBãElasticsearchãfluentdçä¾åã³ã³ããã®èµ·åããå ã«ãããã«æ¥ç¶ããã³ã³ãããç«ã¡ä¸ãããã¨ã©ã¼ã¨ãªã
ãã¡ãããdocker-composeã«ããlinks
ãdepends_on
ãæå®ããã³ã³ããã®èµ·åé åºã¯æ
ä¿ãã¦ããã®ã§ããããããã§ã¯ã³ã³ããå
ã®ããã»ã¹ãreadyã«ãªã£ããã¨ã¾ã§ã¯æ
ä¿ãã¦ããã¾ããã
ããã§ãã³ã³ããå ã®ããã»ã¹ãå¿çããã¾ã§waitãã¦ãããufoscout/docker-compose-waitãå©ç¨ãããã¨ã«ãã¾ããã ä¼¼ããã¼ã«ã¯ããã¤ãããã®ã§ãããè¤æ°ã®ã³ã³ãã/ãã¼ãã¸ã®çéãã§ãã¯ãã§ããç¹ã§ãdocker-compose-waitãæ¡ç¨ãã¾ããã
READMEã«æ¸ãã¦ããããã«åå¾ããã¹ã¯ãªããã /wait
ã«ãã¦ã³ãããç°å¢å¤æ°ã¨èµ·åæã®commandãè¨å®ãããã¨ã§ãæå®ããã³ã³ããã®æå®ãããã¼ãã«çéãããã¨ããã§ãã¯ãã¦ãããä»»æã®ã³ãã³ããå®è¡ãããã¨ãå¯è½ã§ãã
ãµã³ãã«ã®docker-compose.yml
ã¯ä»¥ä¸ã®ããã«ãªãã¾ãã
--- version: '3' services: web: image: ${ECR_NAME}/app:1.0 environment: # ãã§ãã¯ãã対象ãç°å¢å¤æ°ã«å®ç¾©ãã WAIT_HOSTS: fluentd:24224,elasticsearch:9200 # /waitãçµäºããããå®è¡ãããã³ãã³ããå®è¡ãã command: /bin/sh -lc "/wait && ./bin/setup" volumes: - ./bin/wait:/wait # ãã®ä»ã½ã¼ã¹ã³ã¼ãã®ãã¦ã³ãè¨å® fluentd: # fluentdã³ã³ããã®è¨å® elasticsearch: # elasticsearchã³ã³ããã®è¨å®
ãã®è¨å®ã«ãããä¾åã¢ã¸ã¥ã¼ã«ã®ã¤ã³ã¹ãã¼ã«ç¶æ³çã§ãåã³ã³ããã®èµ·åã¹ãã¼ããå¤å°å¤åãã¦ããã³ã³ããã®èµ·åé åºãæ ä¿ããèµ·åã«å¤±æãè¾ãè¨å®ãããã¨ãã§ãã¾ããã
è±docker-sync
docker-syncãä¸å®å®ã§ãããã¨ãã¨ã³ã¸ãã¢å ã§åé¡è¦ããã¦ãã¾ããã
- ç°å¸¸ã«CPUãæ¶è²»ããã¨ããããï¼æ´èµ°ç¶æ ï¼ï¼
- ãã¹ã-ã³ã³ããéã®åæãé ãã¨ãããããã½ã¼ã¹ã³ã¼ãã®å¤æ´ãåæ ããã¦ããªãã¨ããããï¼çªç¶ã®æ»ï¼ï¼
ï¼ä¸è¨ã®åé¡ã¯docker-syncãå©ç¨ãã¦ããunisonèµ·å ã§ãããã¨ã¾ã§ã¯ç¢ºèªãã¦ãã¾ãï¼
docker-syncã¯ãã¤ãã£ããªDockerç°å¢ã§ã¯ãªãMacçã®ç°å¢ã«ããã¦ããã¹ã-ã³ã³ããéã®ãã¡ã¤ã«ã®åç §ãé«éåãããããã«éçºããããã¼ã«ã§ãã
ãããããDocker for Macã¯VMä¸ã§Linuxãèµ·åãããã®Linuxä¸ã®Dockerãå©ç¨ããå½¢ãªã®ã§ããã¹ã-ã³ã³ããéã®ãã¡ã¤ã«ã®åç §ï¼åæï¼ãé ããã®ã¨ãã¦æåã§ãã
ã¨ãããã¨ã§ãå
¨å¡Linuxã§éçºããã°è§£æ±ºã§ãï¼ï¼
docker volumeã®cacheãªãã·ã§ã³ãå©ç¨ãããã¨ã§ãdocker-syncãããã¦å®å®/é«éãªã½ã¼ã¹ã³ã¼ãåæãå®ç¾ãããã¨ãã£ã¬ã³ã¸ãã¦ã¿ã¾ããã
dockerã§ã¯ãvolumeãã¦ã³ãã®delegated
ãªãã·ã§ã³ãå©ç¨ãããã¨ã§ããã¹ã-ã³ã³ããéã§ã®ãã¡ã¤ã«ã®åç
§ã®é
延ã許容ããé«éãªåç
§ãå®ç¾ãããã¨ãå¯è½ã§ãã
# before volumes: # sync-volumeã¸ã®./appã®ãã¦ã³ãã¯docker-sync.ymlãã¡ã¤ã«ã§å®ç¾©ããã¦ãã - sync-volume:/app # after volumes: - ./app:/app:delegated
çµè«ããè¨ãã¨ãè±docker-syncã¯ã§ãã¾ããã§ããã
éçºç°å¢ãç«ã¡ä¸ããè¤æ°ã®ãã¼ã¸ã®è¡¨ç¤ºé度ãè¨æ¸¬ããçµæãããããç´2.3åç¨åº¦è¡¨ç¤ºã¹ãã¼ããå£åãããã¼ã¸ã®è¡¨ç¤ºã«2~3ç§ãããããã«ãªã£ã¦ãã¾ãã¾ããã ãã®æ°å¤ã¯ãã°ãã°è¦ããããdocker-syncã§ç´2åç¨åº¦é«éã«ãªããã¨ããè¨è¿°ã¨ãåè´ãã¦ããã確ããããçµæã¨ãªãã¾ããã
ããç¨åº¦å·¨å¤§ã§ãã¡ã¤ã«æ°ã®ããããã¸ã§ã¯ãã«ããã¦ãDocker for Macã§éçºãè¡ãå ´åãdocker-syncãæãé«éã§ããã¨ããç¥è¦ãå¾ã¾ããã ä¸æ¹ã§è¦æ¨¡ã®å°ããã¢ããªã±ã¼ã·ã§ã³ã§ããã°ãdocker volumeã®cacheãªãã·ã§ã³ã ãã§ãéçºç°å¢ã®ãã¼ã¸æç»ã¯ããã¾ã§é ããªããªãã®ã§ãå®å®æ§ãéè¦ãã¦docker-syncã®å©ç¨ã¯ä¸è¦ã ã¨æãã¾ãã
ã¾ããdocker-syncãå©ç¨ãã¦ããªãããã¸ã§ã¯ãã«delegated
ãªãã·ã§ã³ãå°å
¥ããã¨ãããjest
ã®å®è¡ãæ°åé«éã«ãªãã¨ãã£ãå¯æ¬¡å¹æãå¾ããã¨ãã§ãã¾ããã
ä¾åã¢ã¸ã¥ã¼ã«ãã³ã³ããå ã«éãè¾¼ãã
ãã¡ãã¯ãdocker-syncãå°å ¥ãã¦ããªãããã¸ã§ã¯ãã«å°å ¥ããè¨å®ã§ãã
åè¿°ããããã«ãDocker for Macã®volumeãã¦ã³ãã¯ã¨ã¦ãé ãã®ã§ããã¹ãå´ã®ãã¡ã¤ã«ãåç §ããéãå¢ããã»ã©ãã³ã³ããå ã§ã®Railsã®æåã¯é ããªãã¾ãã
ä¸è¨ã®èª²é¡ã解決ãããããä¸è¨ã®ãããªå¯¾çãæ¡ãã¾ããã
ç¾ç¶ãvendor/bundle
é
ä¸ã®ãã¡ã¤ã«ããã¹ãå´ã§å¿
è¦ã«ãªãã·ã¼ã³ãç¹ã«ãªããããvendor/bundle
以ä¸ã®ãã¡ã¤ã«ã¯ã³ã³ããå
ã®ã¿ã«åå¨ããããã«æ§æãå¤æ´ãã¾ãã
ã¾ããã³ã³ãããç ´æ£/åä½æããéã«ãvendor/bundle
以ä¸ã®ãã¡ã¤ã«ãåé¤ããã¦ãã¾ãã¨ãå度bundle install
ããã®ã«æéãããã£ã¦ãã¾ããããdocker volumeã使ããã³ã³ããã®ã©ã¤ããµã¤ã¯ã«ã¨ã¯å¥ã«æ°¸ç¶åãã¦ãã¾ãã
å
·ä½çãªdocker-compose.yml
ãã¡ã¤ã«ã¯ä¸è¨ã®ããã«ãªãã¾ãã
# before services: web: volumes: - ./app:/app # after services: web: volumes: - ./app:/app - bundle:/app/vendor/bundle - node_modules:/app/node_modules volumes: bundle: {} node_modules: {}
å³ã§ç¤ºãã¨ãä¸å³ã®ããã«ãªãã¾ãã
ãã®æ§æã«ãããã³ã³ããå ããåç §ãããã¹ãå´ã®ãã¡ã¤ã«æ°ãæ¸ãããRailsã®åä½ãé«éåãããã¨ãã§ãã¾ãã
Linux対å¿
MedPeerãµã¼ãã¹ã®ä¸é¨ã®ãã¹ãç°å¢ã¯ãUbuntuä¸ã«æ§ç¯ããéçºç°å¢ã§åä½ãã¦ãã¾ãã
éå»ã«docker-syncå°å ¥å¾ãUbuntuä¸ã®ç°å¢ã¯å¥ãã©ã³ãã§æ§ç¯ããæ§æã¨ãªã£ã¦ãããããã¡ã³ããã³ã¹ãããæ¾ç½®ãããå¾åã¨ãªã£ã¦ãã¾ããã ãã®åé¡ã解決ãããããåãã³ã¼ãã§docker-syncãå©ç¨ããMac OSã§ããdocker-syncãå°å ¥ãã¦ããªãLinux OSã§ãéçºç°å¢ãæ§ç¯ã§ããããã«ä¿®æ£ãã¾ããã
å
·ä½çãªæ¹æ³ã¨ãã¦ã¯ãdocker-composeã®overrideæ©è½ãå©ç¨ãã¾ãã
Mac OSä¸ã§ã¯ãdocker-compose.yml
ãèªã¿è¾¼ã¿ãdocker-sync start
ã¨docker-compose up
ã³ãã³ãã§ç°å¢ãç«ã¡ä¸ãã¾ãã
Linux OSä¸ã§ã¯ãç°å¢å¤æ°ã«COMPOSE_FILE=docker-compose.yml:linux.yml
ãè¨å®ããdocker-compose.yml
ã«å ããlinux.yml
ãèªã¿è¾¼ã¿ãè¨å®ãä¸é¨ä¸æ¸ããã¾ãããã®è¨å®ã§docker-compose up
ã³ãã³ãã§ç°å¢ãç«ã¡ä¸ãã¾ãã
Linux OSã®å ´åã«docker-compose.yml
ãä¸æ¸ãããlinux.yml
ã«ã¯ãdocker-syncã«é¢ããvolumeã®è¨å®ãä¸æ¸ãããé常ã®dockerã«ããvolume mountã®ä»çµã¿ã§ã½ã¼ã¹ã³ã¼ãããã¦ã³ãããããã«è¨å®ãã¾ãã
--- # docker-compose.yml version: '3' services: web: image: ruby:alpine volumes: - sync-volume:/app volumes: sync-volume: external: true
--- # linux.yml version: '3' services: web: volumes: - ./app:/app
ããã«ãMakefile
ä¸ã§OSã«å¿ãã¦COMPOSE_FILE
ã®è¨å®ãå¤æ´ããããã«è¨å®ãã¦ãããããåãmakeã³ãã³ããå®è¡ãããã¨ã§ãMac OSã§ããLinux OSã§ãç°å¢ãç«ã¡ä¸ããããã«æ§ç¯ããã¦ãã¾ãã
èªè¨¼æ©è½ã®æç¡ã®åãæ¿ã
ããããã®ããã¸ã§ã¯ãã®ä¸ã«ã¯æ¢åã®èªè¨¼ãµã¼ãã¹ã¨é£æºãããã®ãããã¤ãããã¾ãã
éçºç°å¢ã§ãæ¬çªç°å¢ã¨åçã®èªè¨¼ã®ä»çµã¿ãåãããã¨ããã¨ãèªè¨¼ã«é¢ä¿ããã³ã³ããã ãã§ã13åãã®ã³ã³ããã追å ã§èµ·åããå¿
è¦ãããã¾ãã
ããã§ã¯æããã«ãã¼ã«ã«ãã·ã³ã®ãªã½ã¼ã¹æ¶è²»ãå¢ãã¦ãã¾ããããéçºç°å¢ã§ã¯èªè¨¼æ©è½ãããã¼ã«å¤æ´ããããã13åã®ã³ã³ãããåé¤ãããæ°æã¡ã«ãªãã¾ãã ããããä¸æ¹ã§èªè¨¼æ©è½ã®æ¤è¨¼ãè¡ãããã·ã¼ã³ãããã¾ãã
ããã§ãæ°ããããã¤ãã®ããã¸ã§ã¯ãã§ã¯éçºç°å¢ã§èªè¨¼æ©è½ã®æç¡ãåãæ¿ããããããã«ããèªè¨¼æ©è½ç¡ãã§éçºç°å¢ãç«ã¡ä¸ããå ´åã¯ãä½è¨ãªã³ã³ãããèµ·åããªãããã«è¨å®ãã¦ãã¾ãã
ãã¡ãã«é¢ãã¦ããdocker-composeã®overrideæ©è½ã§å®ç¾ãã¦ãã¾ãã
èªè¨¼æ©è½ãå©ç¨ããªãæ§æã§docker-compose.yml
ãã¡ã¤ã«ãç¨æããããã«èªè¨¼ãµã¼ãã¹ã追å ããããã®auth.yml
ãã¡ã¤ã«ãç¨æãã¾ãã
ãããã®docker-composeã§å©ç¨ãããã¡ã¤ã«ã¯ãUSE_AUTH
ç°å¢å¤æ°ãdirenvãå©ç¨ãã¦è¨å®ããMakefileä¸ã§COMPOSE_FILE
å¤æ°ã«è¨å®ãããã¨ã§å¶å¾¡ãã¦ãã¾ãã
ã¾ããRailså
é¨ã®å®è£
ã§ãèªè¨¼ãããã¼ã®å®è£
ã«åãæ¿ããå¿
è¦ããããããUSE_AUTH
ç°å¢å¤æ°ãRailsã®ã³ã³ããã«æ¸¡ããå®è£
ãåãæ¿ããããã«ãã¦ãã¾ãã
èªè¨¼æ©è½ãå©ç¨ããªãæ§æã®å ´åã¯ããã¼ã¹ã¨ãªãdocker-compose.yml
ã®ã¿ã§æ§ç¯ããã¾ãã
--- # docker-compose.yml version: '3' services: rails: # railsç¨ã³ã³ããã®è¨å® mysql: # mysqlç¨ã³ã³ããã®è¨å®
èªè¨¼æ©è½ãå©ç¨ããå ´åã¯ãMakefileã«ã¦ç°å¢å¤æ°COMPOSE_FILE=docker-compose.yml:auth.yml
ãè¨å®ãããã¨ã§ãèªè¨¼æ©è½ã追å ãã¾ãã
COMPOSE_FILE
ã«æå®ãããã¨ã§ãä¸è¨ã®auth.yml
ã§docker-compose.yml
ãoverrideãããä¸ã®å³ã®ãããªæ§æã§ã³ã³ãããç«ã¡ä¸ããã¾ãã
--- # auth.yml version: '3' services: rails: environment: USE_AUTH: auth: # èªè¨¼ãµã¼ãã¹ã®ã³ã³ããã®è¨å® # ãã®ä»èªè¨¼ç³»ã®ã³ã³ãããåè¨13å
ãã®ãããªåãæ¿ãæ©æ§ãå°å ¥ãããã¨ã§ãã»ã¨ãã©ã®éçºã·ã¼ã³ã§ã¯èªè¨¼æ©è½ãçç¥ããçãªã½ã¼ã¹ã§ã®éçºç°å¢ãå®ç¾ãããã¨ãã§ãã¾ããã
ä¸è¦ãªã³ã³ããã®åæ¢
ãMedPeerããµã¼ãã¹ã®éçºç°å¢ã«ã¯ãä¸é¨ã®æ©è½ã®åä½ãæ¤è¨¼ãããã®ã³ã³ããããã¢ãã¤ã«çå«ãã¦ãã¹ã¦ã®ãµã¼ãã¹ãåä½ããããã«ä¸è¨ã®ã³ã³ãããå«ã¾ãã¦ãã¾ãã
ã¤ã¾ããããã©ã«ãã¯maximumãªæ§æã¨ãªã£ã¦ãã¾ãã
èµ·åãã¦ããã³ã³ããã®ä¸ã«ã¯ãä¸è¨ã®ãããªãã®ãå«ã¾ãã¦ãã¾ãã
- ã¡ã¼ã«ã®å 容ã確èªããããã®mailcatcherã³ã³ãã
- S3ã¸ã®ãã¡ã¤ã«ã¢ãããã¼ããæ¤è¨¼ããããã®minioã³ã³ãã
- ã¢ãã¤ã«ççãä¸é¨ã®æ©è½ã§å©ç¨ããAPIç¨ã³ã³ãã
ãããã£ãã³ã³ããã¯ãã¹ã¦ã®éçºè ã®ç°å¢ã§å¿ è¦ã¨ãªãããã§ã¯ãªãã®ã§ãä¸è¦ãªã³ã³ãããåæ¢ããããã¨ã§ãéçºç°å¢ã®ãªã½ã¼ã¹æ¶è²»éãåæ¸ãã¦ããããã§ãã
ä¸ããæ§ç¯ããå ´åã¯ãä½åº¦ãç´¹ä»ããdocker-composeã®overrideãå©ç¨ããããã©ã«ããminimumãªæ§æã¨ããç¹å®ã®éçºæã«å¿ è¦ãªã³ã³ããã¯å¥ãã¡ã¤ã«ã§å®ç¾©ããç°å¢å¤æ°ã§åãæ¿ããã®ãè¯ãã§ãããã
ããããä»åã¯ãã§ã«ããã©ã«ããmaximumãªæ§æã¨ãªã£ã¦ãããããdocker-composeã®overrideæ©è½ãå©ç¨ããä¸è¦ãªã³ã³ããã¯èµ·åå¾å³çµäºããããã«è¨å®ãããã¨ã§ãã³ã³ããã®èµ·åæ°ãæ¸ããæ¹åã¨ãã¾ããã
ãã¡ããæå°æ§æã§ååãªéçºè
ã¯ãdirenvãå©ç¨ãç°å¢å¤æ°ã«COMPOSE_FILE
ãè¨å®ãããã¨ã§ãæ§æã®åãæ¿ããã§ããããã«ãã¦ãã¾ãã
--- # docker-compose.yml version: '3' services: rails: # railsç¨ã³ã³ãã mailcatcher: # ã¡ã¼ã«ãwebUIã§ç¢ºèªã§ããmailcatcherã³ã³ãã minio: # AWS S3äºæã®minioã³ã³ãã
--- # docker-compose.minimum.yml version: '3' services: mailcatcher: entrypoint: ['echo', 'Service disabled'] minio: entrypoint: ['echo', 'Service disabled']
å人ãã¨ã®ã«ã¹ã¿ãã¤ãºãå¯è½ã«
ä¸è¨ãå¿ç¨ãããã¨ã§ãèªåã®ã¿ã®ã³ã³ããã追å ããããéã«ç¹å®ã®ã³ã³ãããèµ·åããªãããã«ããã¨ãã£ãã«ã¹ã¿ãã¤ãºãå¯è½ã«ãªã£ã¦ãã¾ãã
docker-compose.custom.yml
ã®ãããªãã¡ã¤ã«ãä½æããä»»æã®è¨å®ã追å ãã¾ãã
ã¾ãã.git/info/exclude
ã«è¨å®ãã³ãããããé¤å¤ãã¾ãã
ç°å¢å¤æ°ã®COMPOSE_FILE
ãè¨å®ããä½æããdocker-compose.custom.yml
ãèªã¿è¾¼ãããã«ãããã¨ã§åãæ¿ããå®ç¾ã§ãã¾ãã
ã¾ã¨ã
ä»ã¾ã§ã®åå¹´éã§è¡ã£ã¦ããéçºç°å¢ã®æ¹åãæ¯ãè¿ã£ã¦ã¿ã¾ããã
åç´ãªãã®ããã¡ãã£ã¨ãã¯ãã«ã«ãªãã®ã¾ã§ããããããã£ããªããã¨ããææ³ã§ãã
ä»å¾ãæ¹åãç¶ãã¦ã¤ã±ã¦ãã¢ãã³ãªéçºç°å¢ãå®ç¾ãã¦ããããã¨æãã¾ãï¼
(âï¸ ÕਠÕ)âï¸æ¯éèªè ã«ãªã£ã¦ãã ãã
ã¡ããã¢ã§ã¯ä¸ç·ã«åã仲éãåéãã¦ãã¾ãã ãå¿åããå¾ ã¡ãã¦ããã¾ãï¼
â åéãã¸ã·ã§ã³ã¯ãã¡ã
https://medpeer.co.jp/recruit/entry/
â éçºç°å¢ã¯ãã¡ã