
ããã«ã¡ã¯ïŒ
æè¿ãç§ã¯ã¯ãŒã¯ãããŒã®æé©æ§ã«ã€ããŠãŸããŸãèããŠããããã®åé¡ã«é¢ããç§ã®ç ç©¶ãå
±æããããšæããŸãã
ãã®æçš¿ã§ã¯ã docker-composeã«ã€ããŠèª¬æããŸããããã¯ãç§ã®æèŠã§ã¯ãéçºè
ã®ã¯ãŒã¯ãããŒãæŽçããã³æé©åããäžèœè¬ã§ãã
ç§ã¯ã»ãšãã©æã§ãã¹ãŠã説æããŸãã®ã§ã以åã«dockerãèããããšããªãå ŽåïŒããã¯å¥åŠã§ãïŒããããæäœããããšããªãããããçè§£ãããå Žåã¯ãç«ãæ±ããŸãã
ãŸããã
ãã®èšäºã§ã¯ãããã€ãã®ãã€ã³ããæå³çã«åçŽåãã詳现ã«ã¯è§Šããã衚é¢çã«å€ãã®åé¡ã«å¯ŸåŠããŠããŸãã
ç§ã¯èªåã®è¡åãå®å
šã«çè§£ããŠãããè¡ããŸããããã¹ãŠãããŸãããã°ããŒãã®äžã«ç»ãå¿
èŠã¯ãªããšæããŸãã
ããã§ãªããšæã人-ããã¯ããªãã®å®å
šãªæš©å©ã§ãããããªãã®èŠç¹ã課ãå¿
èŠã¯ãããŸããã
ãããããé¡ãããŸãïŒ
Docker
å¿
èŠãªäœæ¥ç°å¢ãïŒããããæå³ã§ïŒç°¡åã«å±éã§ãããã¯ãããžãŒã
èšäºã®æåŸã«ãããªã³ã¯ãã詳现ãåŠã¶ããšãã§ããŸãããè³ã«è©°ãŸããªãããã«ãä»ã¯åãæ¿ããªãæ¹ãè¯ãã§ãããã
Docker-compose
ããã±ãŒãžãããŒãžã£ãŒïŒcomposerããã³npmãšåæ§ãdockerã®ã¿ã«ã³ã³ãããŒããããŸãïŒãããã«ããã1ã€ã®ãã¡ã€ã«ïŒconfigïŒã§å¿
èŠãªæ§é ãèšè¿°ã§ããŸãã
ãŸããèšäºã®æåŸã«ãããªã³ã¯ãã詳现ã確èªããããšãã§ããŸãã
Dockerãã
ã³ã³ãããªããžããªïŒpackagistããã³npmã«é¡äŒŒïŒã
éèŠãªæ³šæ ïŒç»åã®èª¬æãæ³šææ·±ãèªãã§ãã ãããæããªè³ªåã®70-80ïŒ
ãããã«èšèŒãããŠããŸããGoogleã§æéãç¡é§ã«ããªãã§ãã ããã
èšçœ®
ããã«ãŒã®ããã¥ã¡ã³ããæžãçŽããªãã®ã§ããªã³ã¯ãæããã ãã§ãã
éåžžã®ãœãããŠã§ã¢ïŒãœãããŠã§ã¢ïŒãã€ã³ã¹ããŒã«ããŠããåé¡ã¯çºçããŸããã
ããèµ·ããããèªãããšãã§ããŸããããã¶ããã®èšäºãšéçºå
šäœãå¶ç¶èŠã€ããã§ããã...
Windowsã«dockerãã€ã³ã¹ããŒã«ããå Žåã¯ãç¹å¥ãªDockerã¯ã€ãã¯ã¹ã¿ãŒãã¿ãŒããã«ã³ã³ãœãŒã«ã䜿çšããå¿
èŠããããŸãã ã€ã³ã¹ããŒã«åŸãé©åãªã·ã§ãŒãã«ããããã¹ã¯ãããã«è¡šç€ºãããŸãã
ãããžã§ã¯ãæ§é
ãŸãããããžã§ã¯ãã®æ§é ãæ±ºå®ããŸãããã
- ãããžã§ã¯ã1
- ãããžã§ã¯ã2
- ãããžã§ã¯ãN
- src
- ã³ã³ãã1
- ã³ã³ãã2
- ã³ã³ããN
- docker-compose.yml
åãããžã§ã¯ãã«ã¯docker-compose.ymlãšsrcãã£ã¬ã¯ããªãå¿
èŠã§ãã
ãŸããåã³ã³ããã«ã¯ãã³ã³ãããåäœããããã«å¿
èŠãªãã¹ãŠã®æ
å ±ïŒæ§æãããŒã¿ãªã©ïŒãä¿åãããç¬èªã®ãã£ã¬ã¯ããªïŒã³ã³ããã®ååãšäžèŽïŒãå¿
èŠã§ãã
CMD /ã¿ãŒããã«
dockerãšcomposeã§äœæ¥ããã«ã¯ãããã€ãã®ã³ãã³ãã®ã¿ã䜿çšããŸãã
- docker ps-ãã¹ãŠã®ã³ã³ãããŒãè¡šç€ºïŒ è©³çŽ° ïŒã
- docker-compose up --build-ãããžã§ã¯ãããã«ãããŸãã buildãã©ã¡ãŒã¿ãŒã¯ãcomposeãã³ã³ãããŒãåäœæããããã«åŒ·å¶ããããã«äœ¿çšãããŸãã ïŒ è©³çŽ° ïŒã
ä»ã®ããŒã ã®èª¬æã¯å
¬åŒãŠã§ããµã€ãã§èŠã€ããããšãã§ããŸãã
ããžãã¹ã«åãæãããã
ã¢ããã
https://hub.docker.com/_/httpd/
æã人æ°ã®ãããµãŒããŒã§ããApacheããå§ããŸãããã
ãããžã§ã¯ããã£ã¬ã¯ããªãäœæããŸãã
æ§æã¯æ¬¡ã®ããã«ãªããŸãã
docker-compose.ymlversion: '3' services: apache: image: httpd:2.4 ports: - 80:80 volumes: - ./src:/usr/local/apache2/htdocs
ããã§äœãèµ·ãã£ãŠããŸããïŒ
image: httpd:2.4
å¿
èŠãªã€ã¡ãŒãžãšãã®ããŒãžã§ã³ãæå®ããŸãïŒå©çšå¯èœãªããŒãžã§ã³ãšå€æŽã®ãªã¹ãã¯ã察å¿ããdocker-hubã«ãããŸãïŒãports: 80:80
- ports: 80:80
ãšãã·ã³éã®ãã©ã¯ãŒãããŒããã€ãŸã ãã·ã³ã®ããŒã80ã«éä¿¡ããããã¹ãŠã®ãªã¯ãšã¹ãã¯ãããŒãããã«ãŒ80ã«ãããŒããã£ã¹ããããŸããvolumes: ./src:/usr/local/apache2/htdocs
-apacheã®äœæ¥ãã£ã¬ã¯ããªãããã·ã³ã®ãã£ã¬ã¯ããªããªã³ã¯ããŸãã srcãã£ã¬ã¯ããªã«ãããã¹ãŠã®ãã¡ã€ã«ã¯ãhtdocsãã£ã¬ã¯ããªã«ãããã®ããã«ãapacheã§äœ¿çšã§ããŸãïŒéãæ©èœããdockerã§äœæããããã¹ãŠã®ãã¡ã€ã«ã¯ããŒã«ã«ãã·ã³ã«ãã³ããŒããããŸãïŒã
äœæ¥ãã£ã¬ã¯ããªã«src / index.htmlãã¡ã€ã«ãäœæããæ¬¡ã®å
容ã远å ããŸãã
Hi, I'am Apache
ãããžã§ã¯ããéå§ããŸãã
docker-compose up --build
PCã¢ãã¬ã¹ã§ãã©ãŠã¶ã«ã¢ã¯ã»ã¹ãããµãŒããŒã®æšæ¶ã確èªããŸãã
ãããžã§ã¯ãã®ã³ã³ãããç Žæ£ããã«ã¯ãã³ã³ãœãŒã«ã§Ctrl + Cãå®è¡ããã ãã§ååã§ãã
DockerãVirtualBoxãä»ããŠæ©èœããå Žåã¯ãIP virtualkaã調ã¹ãå¿
èŠããããŸãã ãããã«ãããDockerã¯ã€ãã¯ã¹ã¿ãŒãã¿ãŒããã«ã䜿çšãããšãã³ã³ãœãŒã«ã®èµ·åæã«ã¢ãã¬ã¹ã衚瀺ãããŸãã
ããã¯ã°ã©ãŠã³ãã§äœæ¥ãã
Dockerãå®è¡ããã³ã³ãœãŒã«ã§åŒãç¶ãäœæ¥ããå¿
èŠãããå Žåã¯ããããžã§ã¯ããããã¯ã°ã©ãŠã³ãã§å®è¡ã§ããŸãã
docker-compose up --build -d
éå§åŸãã³ã³ãœãŒã«ã¯äœæ¥ã«äœ¿çšã§ããããã«ãªããŸãã
ãã®ç¶æ³ã§ã³ã³ãããç Žæ£ããã«ã¯ãã³ã³ããã忢ããŠåé€ããå¿
èŠããããŸãããæåã«ãã®IDã確èªããå¿
èŠããããŸãã
docker ps
ç§ã®å Žåãç§ã¯ãã®çµè«ãåŸãŸããïŒ
CONTAINER ID IMAGE ... 988e27da7bdf httpd:2.4 ...
ã³ã³ããã忢ããŠåé€ããŸãã
docker stop 988e27da7bdf docker rm 988e27da7bdf
ãŸãã¯ãç¡äœæ³ã«è¡åããŠããã«åé€ããããšãã§ããŸã
docker rm -f 988e27da7bdf
nginx
https://hub.docker.com/_/nginx/
nginxã®èšå®ã¯ãapacheãšåãã¹ããŒã ïŒã€ã¡ãŒãžãããŒããäœæ¥ãã£ã¬ã¯ããªïŒã§æ§ç¯ãããŸãã ãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
docker-compose.yml version: '3' services: nginx: image: nginx:1.13 ports: - 80:80 volumes: - ./src:/usr/share/nginx/html
äœæ¥ãã£ã¬ã¯ããªã«src / index.htmlãã¡ã€ã«ãäœæããæ¬¡ã®å
容ã远å ããŸãã
Hi, I'am Nginx
ãã©ãŠã¶ã«å
¥ããšã次ã®ãµãŒããŒã®æšæ¶ã衚瀺ãããŸãã
PHP + Apache
https://hub.docker.com/_/php/
ããããã®PHPãšApacheã«ã€ããŠè©±ãããå Žåããã§ã«æ¢è£œã®ã€ã¡ãŒãžãçšæãããŠããã®ã§ãã³ã³ããã®ãªã³ã¯ã«ã€ããŠè©³ãã説æããŸãã ãããŠä»ããã ã®èšå®ïŒ
docker-compose.yml version: '3' services: web: image: php:7.2-apache ports: - 80:80 volumes: - ./src:/var/www/html
äœæ¥ãã£ã¬ã¯ããªã«src / index.phpãã¡ã€ã«ãäœæããæ¬¡ã®å
容ã远å ããŸãã
<?php phpinfo();
ãã©ãŠã¶ã§åäœã確èªããŸãã
php + nginx
https://hub.docker.com/_/nginx/
https://hub.docker.com/_/php/
ãã®ãã³ãã«ã§ã¯ãphpã¯fpm圢åŒã«ãªããŸãã æŠç¥çã«ã¯ã次ã®ããã«ãªããŸãã

ãããã£ãŠããµãŒããŒæ§æãæžãæããå¿
èŠããããŸãã
ãããè¡ãã«ã¯ãäœæ¥ãã£ã¬ã¯ããªã«å ããŠããµãŒããŒæ§æãã¡ã€ã«ããªã³ã¯ããå¿
èŠããããŸãã
docker-compose.yml version: '3' services: nginx: image: nginx:1.13 ports: - 80:80 volumes: - ./src:/usr/share/nginx/html - ./nginx/nginx.conf:/etc/nginx/nginx.conf depends_on: - php php: image: php:7.2-fpm volumes: - ./src:/usr/share/nginx/html
倿Žç¹ïŒ
volumes: ./nginx/nginx.conf:/etc/nginx/nginx.conf
nginx volumes: ./nginx/nginx.conf:/etc/nginx/nginx.conf
ãã¡ã€ã«ããªã³ã¯ããŸããdepends_on: php
-nginxã®phpãžã®äŸåã瀺ããŸãã å®éãããã¯phpã³ã³ãããnginxãããæ©ãèµ·åããããšãä¿èšŒããŸãã
depends_onãæå®ããªãå Žåãåæ§ã®ãšã©ãŒããã£ããã§ããŸãã
nginx_1 | 2018/01/05 08:56:42 [emerg] 1#1: host not found in upstream "php" in /etc/nginx/nginx.conf:23 nginx_1 | nginx: [emerg] host not found in upstream "php" in /etc/nginx/nginx.conf:23
ãããžã§ã¯ãã®ãã£ã¬ã¯ããªã«/nginx/nginx.confãã¡ã€ã«ãäœæããŸãã æ§æèªäœã¯æ¬¡ã®ããã«ãªããŸãã
nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { root /usr/share/nginx/html; listen 80; server_name localhost; location / { index index.html index.htm; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } } }
rootãã£ã¬ã¯ãã£ããdocker-compose.ymlã«äžèŽããéãããã¹ãŠãæšæºã§ãã
èšå®ãèŠãŠã fastcgi_passãã£ã¬ã¯ãã£ããã€ãŸãphp:9000
å€php:9000
泚æããŠãã ããã
éåžžãããŒã«ã«ãµãŒããŒãæ§æãããŠããå Žåã localhost:9000
瀺ãããŸãlocalhost:9000
ãããã phpã¯å¥ã®ã³ã³ããã«ãããããé£çµ¡ããå¿
èŠããããŸãïŒdockerèªäœãã³ã³ããã®IPã¢ãã¬ã¹ãã代æ¿ãããŸããå®éãhostsãã¡ã€ã«ã远å ããã ãã§ãã¹ãŠã®éæ³ãé ãããŸãïŒã
ãããå¯èœã«ããã«ã¯ã linksãã£ã¬ã¯ãã£ããdocker-composeã«è¿œå ããå¿
èŠããããŸã ïŒå®éã«ã¯å¿
èŠãããŸãããã 詳现ã確èªããŠãã ãã ïŒã
ãã¹ãŠã®ã¢ã¯ã·ã§ã³ã®åŸããããžã§ã¯ãã®ãã£ã¬ã¯ããªã¯æ¬¡ã®ããã«ãªããŸãã
- ãããžã§ã¯ã
- src
- nginx
- docker-compose.yml
èµ·åã確èªãåã¶ïŒ
php + apache + nginx
https://hub.docker.com/_/nginx/
https://hub.docker.com/_/php/
https://hub.docker.com/_/httpd/
ãããããWebãããžã§ã¯ãã§æã人æ°ã®ãããã³ãã«ã§ãã æŠç¥çã«ã¯ã次ã®ããã«ãªããŸãã

ããã€ãã®ã³ã¡ã³ãïŒ
- php㯠ãããé«éã§ãã¡ãã·ã§ããã«ã§ãããããphp-fpmãšããŠäœ¿çšãããŸãã
- htaccessã人æ°ãããããã apacheã䜿çšãããŸãã
ãã¹ãŠãæ§æããã«ã¯ãapache configããªã³ã¯ããå¿
èŠããããŸãããããã£ãŠãdocker-composeã¯æ¬¡ã®ããã«ãªããŸãã
docker-compose.yml version: '3' services: apache: image: httpd:2.4 volumes: - ./src:/var/www/html - ./httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf depends_on: - php nginx: image: nginx:1.13 ports: - 80:80 volumes: - ./src:/var/www/html - ./nginx/nginx.conf:/etc/nginx/nginx.conf depends_on: - apache php: image: php:7.2-fpm volumes: - ./src:/var/www/html
ã€ã³ã¿ãŒãããã§éåžžã®èšå®ãèŠã€ãããªãã£ãã®ã§ïŒãã£ãšããããæ¢ããŠããŸããã§ããïŒãããã«ãŒã ããæå
ã«ãã£ãã®ã§ãæšæºã®ã³ã³ãããããããåŒãåºãããšã«ããŸããã
ãã¹ãŠ3ããŒã ã«é©åïŒ
docker run -d httpd:2.4 docker ps docker cp [ID ]:/usr/local/apache2/conf/httpd.conf ./httpd.conf
ãããã®ã³ãã³ããå®è¡ãããšãhttpd.confãã¡ã€ã«ãçŸåšã®ãã£ã¬ã¯ããªã«è¡šç€ºãããŸãããããããŒã¹ãšããŠäœ¿çšããŸãã
æ¬è³ªçã«ãããã¯å®è¡äžã®ã³ã³ããããã®åçŽãªã³ããŒã§ãã
äœæ¥ãã£ã¬ã¯ããªã«/httpd/httpd.confãã¡ã€ã«ãäœæããŸããç·šéåŸã¯æ¬¡ã®ããã«ãªããŸãã
httpd.conf ServerRoot "/usr/local/apache2" Listen 80 LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule access_compat_module modules/mod_access_compat.so LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule reqtimeout_module modules/mod_reqtimeout.so LoadModule filter_module modules/mod_filter.so LoadModule mime_module modules/mod_mime.so LoadModule log_config_module modules/mod_log_config.so LoadModule env_module modules/mod_env.so LoadModule headers_module modules/mod_headers.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule version_module modules/mod_version.so LoadModule unixd_module modules/mod_unixd.so LoadModule status_module modules/mod_status.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule dir_module modules/mod_dir.so LoadModule alias_module modules/mod_alias.so # additional LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so ServerAdmin you@example.com <Directory /> AllowOverride none Require all denied </Directory> DocumentRoot "/var/www/html" <Directory "/var/www/html"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted </Directory> <IfModule unixd_module> User daemon Group daemon </IfModule> <IfModule dir_module> DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \ default.php default.pl default.cgi default.asp default.shtml default.html default.htm \ home.php home.pl home.cgi home.asp home.shtml home.html home.htm </IfModule> <Files ".ht*"> Require all denied </Files> <IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common <IfModule logio_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> </IfModule> <IfModule alias_module> ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" </IfModule> <Directory "/usr/local/apache2/cgi-bin"> AllowOverride All Options None Require all granted </Directory> <IfModule headers_module> RequestHeader unset Proxy early </IfModule> <IfModule mime_module> TypesConfig conf/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType text/html .shtml AddHandler cgi-script .cgi .pl .asp AddOutputFilter INCLUDES .shtml </IfModule> # # FPM # <IfModule proxy_module> <FilesMatch "\.php$"> SetHandler "proxy:fcgi://php:9000" </FilesMatch> </IfModule>
次ã®å
容ãå«ãäœæ¥ãã£ã¬ã¯ããªã«/nginx/nginx.confãã¡ã€ã«ãäœæããŸãã
nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location ~ \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ { root /var/www/html; } location ~ /\.ht { deny all; } location / { proxy_pass http://apache; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_connect_timeout 120; proxy_send_timeout 120; proxy_read_timeout 180; } } }
proxy_pass http://apache
ã¯ãIPã¢ãã¬ã¹ã§ã¯ãªããã³ã³ãããŒã®ååãå床æå®ããŸãïŒãã¹ãããã®éæ³ãæãåºããŠãã ããïŒã
ãã¹ãã®ããã«ãPHPãåäœããŠããããApacheãåäœããŠãããã確èªããå¿
èŠããããŸãã
次ã®ãããžã§ã¯ãæ§é ã圢æããŸãã
- nginx
- httpd
- src
- docker-compose.yml
.htaccessã®å
容ïŒ
Deny from all
index.phpã®å
容ïŒ
<?php phpinfo();
index.htmlã®å
容ïŒ
Apache not working :-(
ãã¹ãŠãæ£ããæ§æãããŠããå Žåãå³ã¯æ¬¡ã®ããã«ãªããŸãã
- /index.php-PHPæ
å ±ãéããŸã
- /protected/index.html-403 apacheãšã©ãŒãéããŸã
- /protected/.htaccess-403 nginxãšã©ãŒãéããŸãïŒèŠèŠçã«ç°ãªããŸãïŒ
mariadb + phpmyadmin
https://hub.docker.com/_/mariadb/
https://hub.docker.com/r/phpmyadmin/phpmyadmin/
ããŒã¿ããŒã¹ã«ã€ããŠè©±ããŸãããã
æ¥ç¶ã®æ§æã¯æ¬¡ã®ãšããã§ãã
docker-compose.yml version: '3' services: mariadb: image: mariadb:10.3 restart: always volumes: - ./mariadb:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: qwerty phpmyadmin: image: phpmyadmin/phpmyadmin links: - mariadb:db ports: - 8765:80 environment: MYSQL_ROOT_PASSWORD: qwerty depends_on: - mariadb
mariadbããã³phpmyadminã«ã€ããŠã¯ãã³ã³ããåºæã®å€æ°ãå«ãç°å¢ãã£ã¬ã¯ãã£ããæå®ããŸããïŒè©³çްã«ã€ããŠã¯ãã³ã³ããèªäœã®ãªããžããªãåç
§ããŠãã ããïŒã
ãã®å Žåãããã¯rootãŠãŒã¶ãŒã®ãã¹ã¯ãŒãã§ãã
phpmyadminã®å Žåãlinksãã£ã¬ã¯ãã£ããæåã§æå®ããŸããã
links: - mariadb:db
ããã¯ãphpmyadminãæ¥ç¶å
ã®ããŒã¿ããŒã¹ãèªèããããã«ããå¿
èŠããããŸãã
mariadbã³ã³ãããdbãšåŒã°ããå Žåããã®ãã£ã¬ã¯ããªãæå®ããå¿
èŠã¯ãããŸããã
mariadbã®å ŽåãããŒã¿ãã£ã¬ã¯ããªããªã³ã¯ããŸããã
volumes: - ./mariadb:/var/lib/mysql
ããã¯ãããŒã¿ãã³ã³ããå
ã§ã¯ãªãããããžã§ã¯ãã®ãã£ã¬ã¯ããªã«ä¿åãããããã«ããããã§ãã
Linuxãã·ã³ã§äœæ¥ããŠããªãå ŽåãããŒã«ã«ãã·ã³ã«ããŒã¿ããŒã¹ããŒã¿ãé
眮ããéã«åé¡ãçºçããŸãã
æ®å¿µãªããããããã®å
æã§ããªãç¶æ³ã¯ãŸã å
æãããŠããŸããã
誰ã解決çãæã£ãŠããããå
±æããŠãã ããã
ãã ããããã©ã«ãã§ã¯ïŒã³ã³ãããç Žå£ãããåŸã§ãïŒããŒã¿ããŒã¹ããŒã¿ã¯ä¿åãããäœåºŠã§ãã³ã³ãããåäœæã§ããŸããããŒã¿ã¯ããŒã«ã«ãã·ã³ã®è
žã«ä¿åãããŸãã
php + apache + nginx + mariadb + phpmyadmin
https://hub.docker.com/_/nginx/
https://hub.docker.com/_/php/
https://hub.docker.com/_/httpd/
https://hub.docker.com/_/mariadb/
https://hub.docker.com/r/phpmyadmin/phpmyadmin/
ããŠãä»ãç§ãã¡ã¯èšå®ãçµåããè¯ããŠã§ãç°å¢ãæã«å
¥ããŸããïŒ
docker-compose.yml version: '3' services: apache: image: httpd:2.4 volumes: - ./src:/var/www/html - ./httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf depends_on: - php nginx: image: nginx:1.13 ports: - 80:80 volumes: - ./src:/var/www/html - ./nginx/nginx.conf:/etc/nginx/nginx.conf depends_on: - apache php: build: ./php volumes: - ./src:/var/www/html - ./php/php.ini:/usr/local/etc/php/php.ini depends_on: - mariadb mariadb: image: mariadb:10.3 volumes: - ./mariadb:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: qwerty phpmyadmin: image: phpmyadmin/phpmyadmin links: - mariadb:db ports: - 8765:80 environment: MYSQL_ROOT_PASSWORD: qwerty depends_on: - mariadb
phpã«ã€ããŠã¯ã ãã«ããã£ã¬ã¯ãã£ãã远å ããŸããïŒ è©³çŽ° ïŒãããã§ã¯ãDockerfileãä¿åãããŠããphpãã£ã¬ã¯ããªã次ã®å
å®¹ã§æå®ããŸããã
FROM php:7.2-apache RUN apt-get update RUN docker-php-ext-install pdo pdo_mysql mysqli
ãã®ãã¡ã€ã«ã§ã¯ããªããžããªãæŽæ°ããŠphpã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããŸãïŒ docker-php-ext-installã®è©³çް ïŒã
ãŸããå¿
èŠãªæ¹æ³ã§æ§æã§ããããã«ãphpæ§æããªã³ã¯ããŸããã
php.iniã®å
容ã¯ãããšãã°ããã§ååŸã§ããŸã ã
èµ·åã確èªãåã¶ïŒ
ãã¹ãŠãæ£ããè¡ãããŠããã°ã index.phpã¯ãšã©ãŒãªãåäœããããŒã¿ããŒã¹ãµãŒãã¹ãã¡ã€ã«ã¯ãããžã§ã¯ã/ mysqlãã£ã¬ã¯ããªã«è¡šç€ºãããŸãã
Dockerãããã¯ã·ã§ã³
æ®å¿µãªããããã®åé¡ã«ã€ããŠã¯äœãèšããŸãããã å
¬åŒã®ææžã¯èšãããšãã§ããŸãã
æŠéãããžã§ã¯ãã§dockerã䜿çšããçµéšãããå Žåã¯ãã³ã¡ã³ãã§çµéšãå
±æããŠãã ããã䟡å€ãããã®ãââãã©ããªå°é£ãèœãšã穎ã«ééããã®ãããããŠè¥ããŠçµéšã®æµ
ã人ã®ããã®ãã®ä»ã®åœ¹ç«ã€æ
å ±ã
ãããã«
ç§ãå
±æãããã£ãã®ã¯ããã ãã§ãã
ã芧ã®ãšãããæ£åžžã«åäœããããã«dockerã®åäœãç¥ãå¿
èŠã¯ãããŸããã
ã¯ãããã¡ããã埮調æŽãè€éãªã¿ã¹ã¯ã®å Žåã¯ãæ¢ã«Dockerãžã£ã³ã°ã«ãæãäžããå¿
èŠããããŸãããå¹³åçãªçµ±èšã®å Žåãããã¯å¿
èŠãããŸããã
远å ãããã®ãããå ŽåããŸãã¯äœããã®ãããã€ç©ã«æ°ä»ããå ŽåããŸãã¯äœãã«åæã§ããªãå Žåã¯ãã³ã¡ã³ãããŠãã ãã;-)
æçšãªãªã³ã¯ïŒåç
§ãªã¹ãïŒ
å
¬åŒãµã€ãã®ããã¥ã¡ã³ã
Docker Composeã®æŠèŠïŒå
¬åŒãµã€ãïŒ
å®å
šãªDockerãã¥ãŒããªã¢ã«ïŒãŒãããAWSã¯ã©ã¹ã¿ãŒãž
Dockerã®å®çŸ
docker-composeã䜿çšããéçºç°å¢ã®å®å
šèªåå
PS
æ£çŽã«èšããšããã¬ãã£ããªãã®ãã©ãããæ¥ãã®ãã¯ããããŸããã
ã³ã¡ã³ããèšãåããšçšèªã«å¯Ÿããäž»ãªäž»åŒµããããŠããã¯åºæã§ç§ãæå³çã«å€ãã®ãã€ã³ããåçŽåãããšæžãããšããäºå®ãèæ
®ããŠå€æããŸãã
ãã®èšäºã®ç®çã¯ãdocker-composeã®æäœãããã«ç°¡åããåãããžã§ã¯ãã«100500ã®ç°å¢ãšãœãããŠã§ã¢ããããã€ãã代ããã«ãdocker-composeã䜿çšããŠã³ã³ãã³ãã«ãªãæ¹æ³ã瀺ãããšã§ãã
prodUctionïŒ1段èœã§ååã§ãïŒããããã€ãdevãšprodç°å¢éã®ç§»è¡ã«ã€ããŠã®è©±ã¯ãããŸããã
ããããèšäºã¯ããã«ã€ããŠã§ã¯ãããŸããã
PPS
æçãªã³ã¡ã³ããããŠãããkrocos Caravus Vershnik Fesorã«æè¬ããŸã ã