ããã«ã¡ã¯ïŒ ã»ãŒ5幎éãç§ã¯ããã§æ°ããèšäºãæžããŠããŸããããæ£çŽãªãšãããé
ããæ©ãããç§ã¯åã³ãããããå§ãããšãã€ãç¥ã£ãŠããŸããã ç§ã¯ããªãã®ããšã¯ç¥ããŸããããåãããšã§ããããã®ããžãã¹ã¯ãã€ãç§ã«ãšã£ãŠé
åçã§ããã
ãã®ããžãã¹ããã®é·ãäŒæ©ã®åŸã«æ°ããçŽ æãæžãããšã¯æãé£ããã§ãã ããããç®æšãèšå®ãããããæåŸãŸã§è¡ããªããã°ãªããŸããã ç§ã¯é ãããå°ãå§ããŸãã
ç§ã®æèçãªç涯ãéããŠããŠã§ãéçºã¯ä»æ¥ãŸã§ç§ã®æŽ»åã®äž»ãªçš®é¡ã§ããç¶ããŠããŸãã ã ããããããã®è³æã¯ãã¢ããã¥ã¢ã·ã¹ãã 管çè
ããDockerã¯ã©ã¹ã¿ãŒãæ§ç¯ããè©Šã¿ãšããŠæ£ç¢ºã«èªèãããã¹ãã§ãããå°é家ãšããŠã§ã¯ãªãããšãããã«åçœããŸãã ãã®èšäºã§ã¯ãã¯ã©ã¹ã¿ãªã³ã°ã®å°é家ã®æèŠã䞻匵ããããšã¯ã§ããŸãããããã«ãèªåèªèº«ã®çµéšã®ä¿¡é Œæ§ã確èªãããã®ã§ãã
habrakatã®äžã«ã¯ãä»®æ³åã®ããžã£ã³ã°ã«ãããã®ä»ã®é¢é£ãããã¯ã«æ·±ãå
¥ãããšãªãã以äžã«æŠèª¬ããç¹å®ã®ã¿ã¹ã¯ã解決ããããã«å¿
èŠãªã¬ãã«ã§Dockerã䜿çšããã¯ã€ãã¯ã¹ã¿ãŒãããããŸãã ããã§ããã®ææ°ã®ãã¯ãããžãŒã®äœ¿çšãæåãããããã«ãã£ãŠWeb補åã®éçºããææ°ã®æ©åšãžã®å±éããã³è»¢éãŸã§ã®å€ãã®ããã»ã¹ã倧å¹
ã«ç°¡çŽ åãããå Žåã¯ãã«ããããé¡ãããŸãïŒ

åæ
ãã¡ãããåé¡ã®èª¬æãšãã¬ã€ãã§äœ¿çšãããŠããäž»ãªæè¡/æè¡ã®å®çŸ©ããå§ããŸãã
åœåãããç§ã¯èªåã®ãããžã§ã¯ãïŒä»äºããã¬ãŒãã³ã°ãªã©ïŒã®ããã«ãå°ãããŠãããªãæ®éçãªã¯ã©ã¹ã¿ãŒããã°ããäœæããããã«Dockerã«èå³ãæã¡ãŸããã ã·ã¹ãã 管çãå°éçã«æ±ãã€ããã¯ãªãã£ãã®ã§ãWebãããžã§ã¯ãã«äººæ°ã®ãããœãããŠã§ã¢ã¹ã¿ãã¯ãç¹å¥ãªåé¡ãªãå±éã§ããããã«ãªããŸã§ãã¯ã©ã¹ã¿ãªã³ã°ã®åºæ¬ãåŠã¶å¿
èŠããããšå€æããŸããã 次ã«ã次ã®æ§æãDockerã«ãããã€ããããšãæ€èšããŸãã
æåã®2ã€ã¯ãå°å
¥ããå¿
èŠã¯ãªããšæããŸãã 3çªç®ã¯ã MongoDB ã Express.js ã Node.jsã§æ§æãããŠããŸãã ç§ã¯ã»ãšãã©ã®å Žåã MEANã䜿çšããŠRESTful APIãèšè¿°ããããšãã°ãããã«åºã¥ããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãããã«éçºããŸããã
ãã®åŸãç§èªèº«ã次ã®èŠä»¶ãè¿œå ããŠã¿ã¹ã¯ãå°ãè€éã«ããŸããã
- ïŒ ä»®æ³ãã¹ãã®ååã«åºã¥ããŠïŒåã
ã®ã³ã³ãããŒããšã«ç°ãªããã¡ã€ã³ ïŒãŸãã¯ãå€ãã®å Žåããµããã¡ã€ã³ïŒ ãç°¡åã«äœ¿çšããæ©èœ ã
- ããã©ã«ãã®HTTPSãããã³ã«ã䜿çšããŸãã ããã«ãææã®ã¢ããã°ã«å£ããªãSSL蚌ææžã®ç¡æçæãæŽçããããšæããŸãã
- åãGitLab CEãµãŒããŒãžã®å±é -åç¬ã§ã ãã§ãªãããŒã ãšããŠããããžã§ã¯ãã«åãçµãããã®ã¡ã€ã³CVSã·ã¹ãã ãšããŠã
åºæ¬çãªå®çŸ©ïŒ
Docker-ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¬ãã«ã®ä»®æ³åç°å¢ã§ã¢ããªã±ãŒã·ã§ã³ã®å±éãšç®¡çãèªååããããã®ãœãããŠã§ã¢ã
Letsencrypt-ç¡æã®èªåèªèšŒã»ã³ã¿ãŒïŒCAïŒã ä»»æã®Webãµã€ãã§HTTPSïŒSSL / TLSïŒãµããŒããæå¹ã«ããç¡æã®èšŒææžãæäŸããŸãã
- GitLab Community Edition -GitHubã®ãªãŒãã³ãœãŒã¹ã¢ããã°ã Gitãªããžããªã®ç®¡çãã³ãŒãåæããã°è¿œè·¡ãã¢ã¯ãã£ããã£ãã£ãã«ã®æäœãWikiã®äœæãªã©ãæäŸããŸãã
ã€ã³ã¹ããŒã«ãšã»ããã¢ãã
Dockerããã³ãã®ä»ã®ããã±ãŒãžã®ã€ã³ã¹ããŒã«ã«é¢ããåé¡ã¯çºçããŸããã å
¬åŒãŠã§ããµã€ãã§ã¯ããã®ããã»ã¹ã詳现ã«èª¬æãããŠããŸãã 次ã«ãåæã»ããã¢ããã«å¿
èŠãªã³ãã³ãã®äžè¬çãªãªã¹ããäœæããŸãã
ãã®èšäºã§ã¯ã CentOS 7ãã£ã¹ããªãã¥ãŒã¿ãŒã§Dockerããã³ãã¹ãŠã®é¢é£ããã°ã©ã ãã»ããã¢ããããããšãæ€èšããŠããããšãããã«æ確ã«ããŸãããã®OSã§ã¯ãã¡ã€ã³ãµãŒããŒã·ã¹ãã ã§ã®äœæ¥ã«é·ãéæ
£ããŠããããã§ãã äžè¬ã«ãä»ã®Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ãã¢ã¯ã·ã§ã³ã¯ã»ãŒåãã§ãããå¯äžã®éãã¯ãããšãã°Ubuntuã®å Žåã¯yum / dnf ïŒCentOS / Fedoraã®ä»£ããïŒã®ä»£ããã«apt-getã䜿çšããããšã§ãã
Docker + Docker ComposeïŒ
æºåïŒ
$ sudo yum update
$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
Docker Engineãã€ã³ã¹ããŒã«ããŸãã
$ sudo yum install docker-engine
$ sudo systemctl enable docker.service
$ sudo systemctl start docker
ãŠãŒã¶ãŒã°ã«ãŒããdockerããäœæããããã«çŸåšã®ãŠãŒã¶ãŒãè¿œå ããŸãïŒããã¯ããsudoããŸãã¯ã«ãŒãã¢ã¯ã»ã¹ã䜿çšããã«Dockerã§äœæ¥ããããã«å¿
èŠã§ãïŒïŒ
$ sudo groupadd docker
$ sudo usermod -aG docker your_username
ã€ã³ã¹ããŒã«ã®æåã®ç¢ºèªïŒ
$ docker run --rm hello-world
Docker ComposeïŒè€æ°ã®ã³ã³ããã1ã€ã®Webã¢ããªã±ãŒã·ã§ã³ã«çµåããããã®ãŠãŒãã£ãªãã£ïŒã®ã€ã³ã¹ããŒã«ïŒ
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
LetsencryptããSSL蚌ææžãèªåçã«åä¿¡/æŽæ°ãããŠãŒãã£ãªãã£ïŒ
ã€ã³ã¹ããŒã«ããåã«ãEPELãªããžããªãæå¹ã«ããå¿
èŠããããŸã ïŒããããŸã è¡ãããŠããªãå ŽåïŒã
$ sudo yum install certbot
Docker Engineã®åºæ¬

åºæ¬ååïŒ
Dockerã¯æœè±¡åã®è¿œå ã¬ã€ã€ãŒã§ãã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¬ãã«ã§ä»®æ³åãèªååããã·ã¹ãã ã
ã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¬ãã«ã®ä»®æ³åã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ã«ãŒãã«ã1ã€ã§ã¯ãªãããŠãŒã¶ãŒç©ºéã®è€æ°ã®éé¢ãããã€ã³ã¹ã¿ã³ã¹ããµããŒãããä»®æ³åææ³ã§ãããããã®ã€ã³ã¹ã¿ã³ã¹ïŒå€ãã®å Žåã ã³ã³ãããŒãŸãã¯ãŸãŒã³ãšåŒã°ããŸãïŒã¯ããŠãŒã¶ãŒã®èŠ³ç¹ããå®ãµãŒããŒãšå®å
šã«åäžã§ããç°ãªãã³ã³ããã®ããã°ã©ã ãäºãã«åœ±é¿ããããšã¯ã§ããŸãããã
ãŠã£ãããã£ã¢ãã
Dockerã䜿çšããäž»ãªå©ç¹ïŒ
- åã
ã®ã¯ã©ã¹ã¿ãŒã®çžäºåé¢ã
- åãDockerã³ã³ããã¯ãå€ãã®ç°ãªããã·ã³ïŒç°ãªãæ§æïŒã§å€æŽããããšãªãæ©èœããŸãã
- Dockerã¯ãã¢ããªã±ãŒã·ã§ã³ã®å±éã«æé©åãããŠããŸãïŒ ã¢ããªã±ãŒã·ã§ã³äžå¿ ïŒã
- ã¢ããªã±ãŒã·ã§ã³ã¢ã»ã³ããªã®èªååã
- åãã³ã³ããŒãã³ãã®åå©çšã
- æ¢è£œã®ã³ã³ããã®ãªãŒãã³ãœãŒã¹ã¬ãžã¹ããªïŒ Docker Hub ïŒ;
- ã³ã³ããã®ã«ã¹ã¿ãã€ãºãšå±éãèªååããããã®åäžã®APIã
次ã«ãã¯ã©ã¹ã¿ãŒãäœæããããã«å¿
èŠãªåºæ¬ã³ãã³ããæ€èšããŸãã
$ docker run
å®éãæ°ããã³ã³ãããèµ·åããã¡ã€ã³ã³ãã³ãã
äž»ãªãã©ã¡ãŒã¿ãŒïŒ
- --name ïŒUUIDèå¥åïŒã³ã³ããã®äžæã®ååã
- --volumeïŒ-vïŒ ïŒã³ã³ããã«é¢é£ä»ããããããªã¥ãŒã ïŒãã£ã¬ã¯ããªãžã®çµ¶å¯Ÿãã¹ã®åœ¢åŒã§æå®ãããŸãã
- --envïŒ-eïŒ ïŒç°å¢å€æ°ïŒèµ·åãããã³ã³ãããŒã®è¿œå æ§æãèš±å¯ããŸãã
- --publishïŒ-pïŒ ïŒã³ã³ãããŒãæ©èœããããã«å¿
èŠãªç¹å®ã®ããŒããæ§æããŸãïŒããšãã°ãhttpã®å Žåã¯80ãhttpsã®å Žåã¯443ïŒã
$ docker ps
å®è¡äžã®ã³ã³ããã®ãªã¹ããååŸã§ããã³ãã³ãã
$ docker stop container-name
ã³ã³ãããåæ¢ããã³ãã³ãã
$ docker rm container-name
ç¹å®ã®ã³ã³ãããåé€ããŸãã
泚æ ïŒã³ã³ãããåãå€ãåã«ãã³ã³ãããåæ¢ããå¿
èŠããããŸãïŒ docker stop ïŒïŒ
å
¬åŒææžã§åããŒã ã®äœæ¥ããã詳现ã«ç解ã§ããŸã ã ãã®èšäºã§ã¯ãDockerã§ã®äœæ¥ãæ£åžžã«éå§ããããã«å¿
èŠãªåºæ¬çãªã³ãã³ãã®ã¿ã«æ³šç®ããŸããã
ãã®èšäºã§ã¯ã docker run
ã®äœ¿çšã®å
·äœäŸãããå°ã詳ãã説æããŸãã
ä»®æ³ãã¹ããæ§æãã

åé¡ïŒããŸããŸãªã³ã³ãããŒã§ä»®æ³ãã¹ãã䜿çšããŠã¯ã©ã¹ã¿ãŒãå®è£
ããéã®ç¹å®ã®é£ç¹ã¯ã1ã€ã®ããŒãã1ã€ã®ã³ã³ãããŒïŒ--publishã§æ§æïŒã§ã®ã¿ãã¿ãããã§ããããšã§ãã ããã©ã«ãã§ã¯ãããŒã80ããã³/ãŸãã¯443ïŒãããããhttpããã³httpsãããã³ã«ïŒãä»ããŠãµãŒããŒãžã®èŠæ±ã«å¿çããã³ã³ãããŒã1ã€ã ãäœæã§ããŸãã
ãœãªã¥ãŒã·ã§ã³ïŒååãšããŠãããŒã80ããã³443ã§ããªãã¹ã³ããã1ã€ã®ã³ã³ããã«ã«ãã»ã«åããããªããŒã¹ãããã·ã䜿çšããããšã¯éåžžã«æçœã§ãããã®åé¡ã解決ããããã«ããã®ã³ã³ããã®æ©èœã¯äœ¿çšãããä»®æ³ãã¹ãã«åŸã£ãŠãªã¯ãšã¹ããèªåçã«ãªãã€ã¬ã¯ãããŸãã
ãã®ãããªã³ã³ããã¯ãDocker Hub- nginx-proxyã®ãããªãã¯ãã¡ã€ã³ã«ååšããŸãã
ä»®æ³ãã¹ãã®åé¡ã解決ããããšã«å ããŠãããã©ã«ãã§SSL蚌ææžã®äœ¿çšããµããŒãããŠããŸããããã«ããããµã€ããžã®å®å
šãªHTTPSã¢ã¯ã»ã¹ã®ãµããŒããå±éã§ããŸãã
ãã®ãªããŒã¹ãããã·ã³ã³ãããéå§ããåã«ãä»®æ³ãã¹ããšããŠäœ¿çšãããã¡ã€ã³ã®SSL蚌ææžãååŸããŸãããã
ç¡æã®SSL蚌ææžã®ååŸ
SSL蚌ææžãååŸããã«ã¯ãç¡æã®letsencryptãµãŒãã¹ã䜿çšããŸãã ãããè¡ãã«ã¯ãåã®æé ã§ã certbotãŠãŒãã£ãªãã£ãæ¢ã«ã€ã³ã¹ããŒã«ããŸãã ã ãã®ãŠãŒãã£ãªãã£ã®äœ¿çšã®è©³çŽ°ã«ã€ããŠã¯èª¬æããŸããïŒããã¯ãã¹ãŠå
¬åŒããã¥ã¡ã³ãã«ãããŸã ïŒã
ãã¡ã€ã³ã®ç¡æã®SSL蚌ææžãèªåçã«åä¿¡ããæ¢è£œã®ã³ãã³ããæäŸããŸãã
$ sudo certbot certonly -n -d yourdomain.com --email your@email.com --standalone --noninteractive --agree-tos
--standalone --noninteractive --agree-tos
ãããã®ãã©ã¡ãŒã¿ãŒã¯ãcertbotãããã¯ã°ã©ãŠã³ãã§å®è¡ãããç¹å®ã®WebãµãŒããŒãžã®ç¹å®ã®ãã€ã³ããªãã§èšŒææžãçæããããã«å¿
èŠã§ãã
ãã®ã³ãã³ããæ£åžžã«å®è¡ãããçµæã次ã®2ã€ã®ãã¡ã€ã«ãçæãããŸãã
/etc/letsencrypt/live/yourdomain.com/fullchain.pem
/etc/letsencrypt/live/yourdomain.com/privkey.pem
nginx-proxyãæ£ããæ©èœããããã«ã¯ã yourdomain.com.crt ïŒèšŒææžãã¡ã€ã«ïŒãšyourdomain.com.key ïŒç§å¯éµïŒã®åœ¢åŒã§åãã¡ã€ã³åã«2ã€ã®ãã¡ã€ã«ã䜿çšããŠããã¹ãŠã®èšŒææžãã¡ã€ã«ã1ã€ã®ãã£ã¬ã¯ããªã«é
眮ããå¿
èŠããããŸãã
ãã®å Žåãã·ã³ããªãã¯ãªã³ã¯ã䜿çšããã®ãè«ççã§ãã äŸïŒ
$ mkdir ssl-certs
$ cd ssl-certs
$ ln -s /etc/letsencrypt/live/yourdomain.com/fullchain.pem ./yourdomain.com.crt
$ ln -s /etc/letsencrypt/live/yourdomain.com/privkey.pem ./yourdomain.com.key
.pemæ¡åŒµåã«ããŸã泚æãæã£ãŠã¯ãããŸãã-ãã¡ã€ã«ã®æ¬è³ªã¯ããããå€ãããŸããã
åæ§ã«ãç§ãã¡ãææãããã¡ã€ã³åã®èšŒææžãååŸããããããåŒãç¶ãä»®æ³ãã¹ããšããŠäœ¿çšã§ããŸãã å¯äžã®èŠä»¶ã¯ããããã®ãã¡ã€ã³åã®Aã¬ã³ãŒããã certbot certonly ...
ãå®è¡ãããµãŒããŒã®å€éšIPã¢ãã¬ã¹ã«åããããå¿
èŠãããããšã§ãcertbot certonly ...
åãã¡ã€ã³ã®èšŒææžãçæãããã nginx-proxyã³ã³ãããŒãèµ·åããæºåãã§ããŸããã
$ docker run -d -p 80:80 -p 443:443 \ â-v /full/path/to/ssl-keys:/etc/nginx/certs \ â-v /var/run/docker.sock:/tmp/docker.sock:ro \ âjwilder/nginx-proxy
ãã®ã³ãã³ããããã«è©³ããæ€èšããŠãã ããã
-p 80:80 -p 443:443
ããŒã80ããã³443ãã³ã³ããã«ãã€ã³ãããŸãããã«ããµãŒããŒã®80çªç®ã®ããŒãã¯ãã³ã³ããå
ã®80çªç®ã®ããŒãã«å¯Ÿå¿ããããŒã443ãšåæ§ã«ãªããŸããå¥ã®ä»®æ³ã³ã³ããå
ã®ãã·ã³å
šäœãšããŒãã-v /full/path/to/ssl-keys:/etc/nginx/certs
ãã®ã³ã³ããã®èšå®ã«å¿
èŠãªæåã®ããªã¥ãŒã ã ããã§ã¯ãã³ã³ããèªäœã®å
éšã®æšæºãã£ã¬ã¯ããª/ etc / nginx / certsãããã¡ã€ã³ã®èšŒææžãšç§å¯ããŒãã¡ã€ã«ãžã®ã·ã³ããªãã¯ãªã³ã¯ãæåã§é
眮ãããã£ã¬ã¯ããªã«ãªã³ã¯ããŸãïŒåã®æ®µéã§ïŒãjwilder/nginx-proxy
-Dockerããå
ã®ã³ã³ãããŒèå¥åã Docker Engineã¯ããŸã ããŠã³ããŒããããŠããªãå Žåããã®ã³ã³ããã®ã€ã¡ãŒãžãèªåçã«ããŠã³ããŒãããŸãã
ããã ãã§ã-æåã®ã³ã³ãããèµ·åããŸãïŒ ãããŠããã®ã³ã³ããã¯ãªããŒã¹ãããã·ã§ããããããä»ããŠã¢ããªã±ãŒã·ã§ã³ã³ã³ãããVIRTUAL_HOSTã«ããã«èšå®ã§ããŸãã
ããŸããŸãªã¹ã¿ãã¯ã®äœ¿çšäŸ
ã©ã³ã
ããã§ãæåŸã«ããã§ã«Webã¢ããªã±ãŒã·ã§ã³ãéçºã§ããã³ã³ãããŒã®èµ·åã«ç§»ãããšãã§ããŸãã
Docker HubããŒã¿ããŒã¹ã«ã¯ãLAMPã³ã³ãããŒçšã®ããŸããŸãªãªãã·ã§ã³ããããŸãã å人çã«ã¯ã tutum-docker-lampã䜿çšããŸããã
以åã¯ãDocker Engineã«å ããŠã Docker ComposeãŠãŒãã£ãªãã£ãã€ã³ã¹ããŒã«ããŸããã ãããŠããã®ç¬éãã䜿çšãéå§ããŸãã Docker Composeã¯ãè€æ°ã®ã³ã³ãããçµã¿åããããéçºäžã®ã¢ããªã±ãŒã·ã§ã³ãæ£ç¢ºã«è¡šãã¢ããªã±ãŒã·ã§ã³ãäœæããã®ã«äŸ¿å©ã§ãã
ãã®ã³ã³ãããnginx-proxyãšçµã¿åãããŠå®è¡ããã«ã¯ã次ãè¡ãå¿
èŠããããŸãã
tutum-docker-lampã®ãœãŒã¹ãå¥ã®ãã£ã¬ã¯ããªã«ããŠã³ããŒãããŸãïŒããã¯git clone
ã䜿çšãããšæã䟿å©ã§ãïŒã
- ãã®äœæ¥ãã£ã¬ã¯ããªã«ã次ã®å
容ã®docker-compose.ymlãã¡ã€ã«ãäœæããŸãã
web: âbuild: . volumes: - ./www:/var/www/html environment: - MYSQL_PASS=yourmysqlpassword - VIRTUAL_HOST=yourdomain.com
docker-composeã䜿çšããŠèµ·åããŸãã
$ docker-compose up
ãã®äŸã§ãããããã«ãä»®æ³ãã¹ãã¯ã1ã€ã®ç°å¢å€æ°VIRTUAL_HOSTã®ã¿ã䜿çšããŠnginx-proxyã䜿çšããŠç®¡çãããŸãã
æ./www:/var/www/html
泚æããŠ./www:/var/www/html
ã æããã«ãwwwãã©ã«ããŒã¯ãµã€ãã®äœæ¥ãã£ã¬ã¯ããªãŒã«ãªããŸãïŒæåã§äœæããå¿
èŠããããŸãïŒã ãã®ãã£ã¬ã¯ããªå
ã®ãã¹ãŠã®ãã¡ã€ã«ã¯ãå®è¡äžã®ã³ã³ããå
ã®/var/www/html
èªåçã«åé¡ãããŸãã
docker-compose.ymlèšå®ãã¡ã€ã«ã®æ§æã«ã€ããŠã¯ã å
¬åŒããã¥ã¡ã³ãã§è©³ããç解ã§ããŸã ã
ã¬ã³ã
LEMPã³ã³ããã®èµ·åã¯ãåºæ¬çã«äžèšã®äŸãšå€ãããŸããã
ãŸããDocker Hubã§ã³ã³ãããŒãèŠã€ããŸãã äŸïŒ docker-lemp ã
ã³ã³ãããŒã®ãœãŒã¹ãããŠã³ããŒããã docker-compose.ymlãè¿œå ããŸãã ã«ã¹ã¿ã ã³ã³ããã®ãã®èšå®ãã¡ã€ã«å
ã§ã¯ãç°å¢å€æ°VIRTUAL_HOSTãèšå®ã§ããã ãã§ãªãã Dockerfileãèš±å¯ãããã¹ãŠãèšå®ã§ããŸãã ããšãã°ã Dockerfileã¯ä»¥äžãå®çŸ©ããŸãã
VOLUME /var/www/
ãããã£ãŠã次ã®ããã«docker-compose.ymlã§ãã®ããªã¥ãŒã ã«ãªã³ã¯ã§ããŸãã
volumes:
- ./www:/var/www
NodeJS + ExpressJS + MongoDB
ãã®ãããªæ§æã®äŸïŒ docker-nodejs-mongodb-example ã
docker-compose.ymlãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
web:â build: .â volumes:â - "./api:/src/app"â environment:â - VIRTUAL_HOST=yourdomain.comâ links:â - "db:mongo" db: âimage: mongo âports:â - "27017:27017" âvolumes:â - ./data/db:/data/db
ãã®å Žåã2ã€ã®ãªã³ã¯ãããã³ã³ãããäœæãããŸãã 1ã€ã¯ããŒã¹ïŒmongoDBïŒçšã2ã€ç®ã¯NodeJSã¢ããªã±ãŒã·ã§ã³èªäœçšã§ãã
ãã®ã³ã³ããã®ãã³ãã«ãå®è¡ããã«ã¯ãåãdocker-compose up
ãŸãã
gitlab / gitlab-ceã§ã®äœæ¥ã®åŸ®åŠã

ããè€éãªã³ã³ããã®äžã«ã¯ãnginx-proxyã䜿çšããŠå®è¡ããããã«è¿œå ã®èšå®ãå¿
èŠãªãã®ããããŸãã ãããã®ã³ã³ããã«ã¯gitlab-ceãå«ãŸããŸãã
ãã®èšäºã§èª¬æãããŠããæ§æãèæ
®ã«å
¥ããŠããã®ã³ã³ãããŒãå®è¡ããã³ãã³ãã®å®å
šã«æ©èœããããŒãžã§ã³ãæåã«æäŸãã次ã«ãã®ã³ãã³ãã®è©³çŽ°ã説æããŸãã
ã ããïŒ
$ docker run --detach \ --hostname gitlab.yourdomain.com \ --publish 2289:22 \ --restart always \ --name custom-gitlab \ --env GITLAB_OMNIBUS_CONFIG="nginx['listen_port'] = 80; nginx['listen_https'] = false; nginx['proxy_set_headers'] = { \"X-Forwarded-Proto\" => \"https\", \"X-Forwarded-Ssl\" => \"on\" }; gitlab_rails['gitlab_shell_ssh_port'] = 2289; external_url 'https://gitlab.yourdomain.com'; gitlab_rails['smtp_enable'] = true; gitlab_rails['smtp_address'] = 'smtp.mailgun.org'; gitlab_rails['smtp_port'] = 2525; gitlab_rails['smtp_authentication'] = 'plain'; gitlab_rails['smtp_enable_starttls_auto'] = true; gitlab_rails['smtp_user_name'] = 'postmaster@mg.yourdomain.com'; gitlab_rails['smtp_password'] = 'password'; gitlab_rails['smtp_domain'] = 'mg.yourdomain.com';" \ --env VIRTUAL_HOST="gitlab.yourdomain.com" \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest
NGINXãªããŒã¹ãããã·+ HTTPSçµç±ã§èµ·å
ãã®å Žåã«ãªããŒã¹ãããã·ã䜿çšããã¹ããŒã ãæ©èœãããã«ã¯ã以äžãè¿œå ããå¿
èŠããããŸãã
nginx['listen_port'] = 80; nginx['listen_https'] = false; nginx['proxy_set_headers'] = { \"X-Forwarded-Proto\" => \"https\", \"X-Forwarded-Ssl\" => \"on\" };
ãã®çç±ã¯ãã³ã³ããã§äœæ¥ããå Žåãnginx-proxyã¯ãã³ã³ããå
ã®443ã§ã¯ãªãããŒã80ã«ã¢ã¯ã»ã¹ããŸããgitlab-ceïŒ proxy_set_headers ïŒ ã³ã³ããå
ã®nginxèšå®ã«è¿œå ã®ããããŒããªãå Žåããªã¯ãšã¹ãã¯ééããŸããã
ããã«ã以äžãè¿œå ããããšãéèŠã§ãã
external_url 'https://gitlab.yourdomain.com';
ããŒã22
äžçªäžã®è¡ã¯æ¬¡ã®ãšããã§ãã
--publish 2289:22
äœæ¥ãã·ã³ã§ã®äœæ¥ãSSHãããã³ã«ãä»ããŠè¡ãããå ŽåãããŒã22ããã§ã«sshdãµãŒãã¹ã«ãã£ãŠå æãããŠããããããã³ãã«ã22:22ããçŽæ¥äœæããããšã¯ã§ããŸããã
ãã®åé¡ã®è§£æ±ºçã¯ãgitlab-ceã®å
¬åŒããã¥ã¡ã³ãã«èšèŒãããŠããŸãã ç°¡åã§ãããµãŒããŒå
ã®ä»ã®ïŒ22ãé€ãïŒããŒããã³ã³ãããŒå
ã®ããŒã22ã«ãã€ã³ãããŸãã ãã®äŸã§ã¯ãããŒã2289ã䜿çšãããŸãã
ãããšäžŠè¡ããŠãè¿œå ããããšãå¿ããªãããšãéèŠã§ã
gitlab_rails['gitlab_shell_ssh_port'] = 2289;
GitLabèªäœã®èšå®ã
ãããã£ãŠãgitlab-ceãèµ·åããŠãªããžããªãäœæãããšã次ã®ã¹ã¿ã€ã«ã®ã¢ãã¬ã¹ã§äœæ¥ãå®è¡ãããŸãã
ssh://git@gitlab.yourdomain.com:2289/username/repository_name.git
SMTPãµãŒããŒã®ã»ããã¢ãã
GitLabèªäœã®ç¹å¥ãªç°å¢å€æ°ã䜿çšããããšãå¿
èŠã§ãã
ç§ã®å ŽåïŒ Google Cloud Engineã䜿çšïŒãããŒã25ã465ã¯ããã©ã«ãã§éããããŠããŸãïŒã€ãŸããæšæºã®SMTPãããã³ã«ããŒãïŒã ãã®åé¡ã®è§£æ±ºçã®1ã€ã¯ãSMTPãµãŒããŒãšããŠãµãŒãããŒãã£ãµãŒãã¹ïŒ MailGunãªã©ïŒã䜿çšããããšã§ãã ãããè¡ãã«ã¯ãèšå®ã䜿çšããŸãã
gitlab_rails['smtp_enable'] = true; gitlab_rails['smtp_address'] = 'smtp.mailgun.org'; gitlab_rails['smtp_port'] = 2525; gitlab_rails['smtp_authentication'] = 'plain'; gitlab_rails['smtp_enable_starttls_auto'] = true; gitlab_rails['smtp_user_name'] = 'postmaster@mg.yourdomain.com'; gitlab_rails['smtp_password'] = 'password'; gitlab_rails['smtp_domain'] = 'mg.yourdomain.com';
æåŸã«ã --env VIRTUAL_HOST="gitlab.yourdomain.com" \
-proxyèªäœã®ç°å¢å€æ°ãå¿ããªãã§ãã ããã
以äžã§ãã ãã®æ瀺ãå®äºãããšãDockerã¯GitLab CEã§å®å
šã«æ©èœããã³ã³ãããŒãèµ·åããŸãã
Gitlab-ceæšæºã¢ããã°ã¬ãŒãããã»ã¹
ãããããã®ã¬ã€ãã§åå¥ã«åŒ·èª¿ãããæåŸã®ç¬éã§ãã
Dockerã䜿çšããŠGitLabãæŽæ°ããããã»ã¹ã¯ãããã€ãã®ã³ãã³ãã«ç°¡ç¥åãããŠããŸãã
docker stop custom-gitlab
å®è¡äžã®ã³ã³ãããŒãåæ¢ããŸãã
docker rm custom-gitlab
-GitLab CEã³ã³ãããŒãåé€ããŸãã
éèŠãªç¹ïŒã³ã³ãããŒãåé€ããŠããã·ã¹ãã ã®äœ¿çšäžã«äœæãããããŒã¿ãåé€ããããšã«ã¯ãªããŸããã ãããã£ãŠããã®ã³ãã³ãã¯åé¡ãªãå®è¡ã§ããŸãã
docker pull gitlab/gitlab-ce
å®éã«ã³ã³ãããŒã€ã¡ãŒãžãæŽæ°ããŸãã
- é·ãã³ãã³ãïŒäžèšã®äŸïŒãå®è¡ããæåã«ã³ã³ãããŒãèµ·åããŸããã
以äžã§ãã ãããã®4ã€ã®ã³ãã³ããå®äºãããšãGitLabã¯èªåçã«ææ°ããŒãžã§ã³ã«ã¢ããã°ã¬ãŒãããDocker Engineãéå§ããŸãã
ãŸãšã
ãããã£ãŠããã®ã¬ã€ãã®çµæãšããŠãNGINX Reverse Proxyã«åºã¥ããDockerã¯ã©ã¹ã¿ãŒãååŸããå¿
èŠããããŸãã åWebã¢ããªã±ãŒã·ã§ã³ã«ã¯ç¬èªã®ä»®æ³ãã¹ãããããåæã«å®å
šãªHTTPSãããã³ã«ããµããŒãããŠããŸãã
Webã¢ããªã±ãŒã·ã§ã³ãšãšãã«ãå®å
šã«æ§æãããGitLabã¯ã©ã¹ã¿ãŒã¯ãSMTPãµãŒããŒãžã®ã¢ã¯ã»ã¹ãŸã§æ©èœããŸãã
ç§ã®ãã®å°ããªç 究ããHabrHabrã®å€ãã®èªè
ã«ãšã£ãŠæçšã§ããããå°ãªããšãèå³æ·±ããã®ã«ãªãããšãæ¬åœã«é¡ã£ãŠããŸãã ãã¡ãããå°é家ããã®æ¹å€ãèšäºãžã®è¿œå ãŸãã¯æ¹åãèããŠããããã§ãïŒ
ãæž
èŽããããšãããããŸããïŒ