{"id":2775,"date":"2022-01-17T07:00:24","date_gmt":"2022-01-16T22:00:24","guid":{"rendered":"https:\/\/gb-j.com\/?p=2775"},"modified":"2022-01-15T13:41:24","modified_gmt":"2022-01-15T04:41:24","slug":"docker-cakephp","status":"publish","type":"post","link":"https:\/\/gb-j.com\/column\/docker-cakephp\/","title":{"rendered":"\u65e2\u5b58\u306e CakePHP \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092 Docker \u3067\u52d5\u304b\u3059\u4e8b\u4f8b"},"content":{"rendered":"<h1>Docker<\/h1>\r\n\r\nDocker \u306f\u958b\u767a\u74b0\u5883\u3092\u69cb\u7bc9\u3059\u308b\u306e\u306b\u3068\u3066\u3082\u4fbf\u5229\u3067\u3001\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7acb\u3061\u4e0a\u3052\u308b\u6642\u306f\u306a\u308b\u3079\u304f Docker \u3067\u74b0\u5883\u69cb\u7bc9\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u308c\u3060\u3051\u3067\u306f\u7269\u8db3\u308a\u305a\u3001\u6700\u8fd1\u306f\u904e\u53bb\u306e\u958b\u767a\u74b0\u5883\u3082 Docker \u3078\u306e\u79fb\u884c\u3092\u9032\u3081\u3066\u3044\u307e\u3059\u3002<br>\r\n<br>\r\n<h1>\u958b\u767a\u74b0\u5883<\/h1>\r\n\r\n\u4eca\u56de\u3001 \u6b21\u306e\u3088\u3046\u306a\u30b5\u30fc\u30d0\u3092 Docker \u3067\u7528\u610f\u3057\u305f\u306e\u3067\u3001\u7d39\u4ecb\u3055\u305b\u3066\u9802\u304d\u307e\u3059\u3002<br>\r\n<ul>\r\n<li>Ubuntu20.04<\/li>\r\n<li>Apache2<\/li>\r\n<li>PHP7.2<\/li>\r\n<li>CakePHP 3.8<\/li>\r\n<li>MySQL (RDS\u3092\u76f4\u63a5\u5229\u7528\u306e\u305f\u3081 Docker \u306b\u306f\u542b\u307e\u306a\u3044)<\/li>\r\n<\/ul>\r\n\r\n\u307e\u305f\u4eca\u56de\u306f\u65e2\u5b58\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b Docker \u3092\u5f8c\u4e57\u305b\u3059\u308b\u305f\u3081\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u306b docker \u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u89aa\u30d5\u30a9\u30eb\u30c0\u3092 docker \u3067\u4f5c\u6210\u3057\u305f OS \u5185\u306b\u30de\u30a6\u30f3\u30c8\u3057\u3066\u3044\u307e\u3059\u3002docker \u30b3\u30de\u30f3\u30c9\u3060\u3051\u3067\u3082\u5b9f\u884c\u306f\u53ef\u80fd\u3067\u3059\u304c\u3001\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5165\u529b\u304c\u9762\u5012\u306b\u306a\u308b\u305f\u3081\u3001docker-composer \u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\u3002<br>\r\n<br>\r\n\u305d\u306e\u305f\u3081\u4eca\u56de\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d5\u30a9\u30eb\u30c0\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<br>\r\n<a href='https:\/\/gb-j.com\/wp-content\/uploads\/2022\/01\/2022-01-14_21h30_54.png'><img src='https:\/\/gb-j.com\/wp-content\/uploads\/2022\/01\/2022-01-14_21h30_54.png' alt='' width='163' height='535' class='aligncenter size-full wp-image-2778' \/><\/a><br>\r\n<br>\r\n<h1>Docker \u306e\u6e96\u5099\u30fb\u8d77\u52d5<\/h1>\r\n\r\n\u305d\u308c\u3067\u306f Docker \u306b\u5fc5\u8981\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002 docker \u30d5\u30a9\u30eb\u30c0\u306e\u5185\u90e8\u306f\u30b7\u30f3\u30d7\u30eb\u3067\u3059\u3002<br>\r\n<a href='https:\/\/gb-j.com\/wp-content\/uploads\/2022\/01\/2022-01-14_21h39_54.png'><img src='https:\/\/gb-j.com\/wp-content\/uploads\/2022\/01\/2022-01-14_21h39_54.png' alt='' width='192' height='64' class='aligncenter size-full wp-image-2779' \/><\/a><br>\r\n<br>\r\nweb \u30d5\u30a9\u30eb\u30c0\u306f CakePHP \u3092\u52d5\u4f5c\u3055\u305b\u308b\u305f\u3081\u306e Web \u30b5\u30fc\u30d0\u306b\u5fc5\u8981\u306a\u30d5\u30a1\u30a4\u30eb\u304c\u683c\u7d0d\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u307e\u305f docker composer \u3092\u5229\u7528\u3057\u3066\u30b5\u30fc\u30d0\u3092\u8d77\u52d5\u3059\u308b\u306e\u3067\u3001 docker-composer.yml \u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u3059\u3002<br>\r\n<br>\r\ndocker-composer.yml \u306e\u5185\u5bb9\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<br>\r\n<br>\r\n<h3>docker-composer.yml<\/h3>\r\n<pre>version: '3'\r\nservices:\r\n  web:\r\n    image: ubuntu:20.04\r\n    container_name: web\r\n    build: .\/web\r\n    ports: \r\n      - 8080:80\r\n    volumes:\r\n      - ..\/:\/var\/www\/html\/***\r\n    command: &gt;\r\n      sh -c \"\r\n      composer install --no-interaction &&\r\n      service apache2 restart &&\r\n      tail -f \/dev\/null\r\n      \"\r\n    tty: true<\/pre>\r\n\r\n\u91cd\u8981\u306a\u306e\u306f\u3001\u6b21\u306e3\u70b9\u3067\u3059\u3002<br>\r\n<br>\r\n1. build \u306b web \u30d5\u30a9\u30eb\u30c0\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<br>\r\n\u3000\u5148\u8ff0\u306e\u901a\u308a\u3001web \u30d5\u30a9\u30eb\u30c0\u306b\u306f\u30b5\u30fc\u30d0\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u30d5\u30a1\u30a4\u30eb\u7fa4\u304c\u63c3\u3063\u3066\u3044\u307e\u3059\u3002<br>\r\n<br>\r\n2. volume \u306b\u30de\u30a6\u30f3\u30c8\u3059\u308b\u30d5\u30a9\u30eb\u30c0\u3068\u3057\u3066\u3001\u672c\u30d5\u30a1\u30a4\u30eb\u306e\u89aa\u30d5\u30a9\u30eb\u30c0\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u30de\u30a6\u30f3\u30c8\u3059\u308b\u5148\u306f\u3001\/var\/www\/html\/*** \u3068\u3057\u3066\u3044\u307e\u3059\u3002\u9069\u5b9c\u4fee\u6b63\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br>\r\n<br>\r\n3. \u8d77\u52d5\u6642\u306b composer install \u3092\u5b9f\u884c\u3057\u3001CakePHP \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5b9f\u884c\u306b\u5fc5\u8981\u306a\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\u305d\u306e\u5f8c\u30b5\u30fc\u30d0\u3092\u518d\u8d77\u52d5\u3057\u3001\u6e96\u5099\u5b8c\u4e86\u3067\u3059\u3002<br>\r\n<br>\r\n\u305d\u308c\u3067\u306f web \u30d5\u30a9\u30eb\u30c0\u306e\u4e2d\u8eab\u3092\u78ba\u8a8d\u3057\u307e\u3057\u3087\u3046\u3002<br>\r\n<a href='https:\/\/gb-j.com\/wp-content\/uploads\/2022\/01\/2022-01-15_13h33_35.png'><img src='https:\/\/gb-j.com\/wp-content\/uploads\/2022\/01\/2022-01-15_13h33_35.png' alt='' width='172' height='99' class='aligncenter size-full wp-image-2780' \/><\/a><br>\r\n<br>\r\nweb \u30d5\u30a9\u30eb\u30c0\u306b\u306f 3 \u3064\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u3059\u3002\u6700\u3082\u91cd\u8981\u306a\u306e\u306f Dockerfile \u3067\u3059\u3002<br>\r\n<br>\r\n<h3>Dockerfile<\/h3>\r\n<pre>FROM ubuntu:20.04\r\n\r\nARG DEBIAN_FRONTEND=noninteractive\r\nENV TZ=Asia\/Tokyo\r\n\r\n#\u30ea\u30dd\u30b8\u30c8\u30ea\u8ffd\u52a0\r\nRUN apt update \\\r\n  && apt -y install software-properties-common \\\r\n  && add-apt-repository ppa:ondrej\/php\r\n\r\n#\u5404\u7a2e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\nRUN apt update \\\r\n  && apt -y install tzdata apache2 php7.2 php7.2-dev php7.2-xml php7.2-mysql php7.2-intl php7.2-mbstring php7.2-zip php7.2-gd \\\r\n  && mkdir -p \/var\/www\/html\/***\r\n\r\n#\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u30b3\u30d4\u30fc\r\nCOPY 000-default.conf \/etc\/apache2\/sites-enabled\r\nCOPY apache2.conf \/etc\/apache2\r\n\r\n#composer\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\nRUN php -r \"copy('https:\/\/getcomposer.org\/installer', 'composer-setup.php');\" \\\r\n  && php composer-setup.php \\\r\n  && php -r \"unlink('composer-setup.php');\" \\\r\n  && mv composer.phar \/usr\/local\/bin\/composer \\\r\n  && a2enmod rewrite\r\n\r\n#Apache\u8d77\u52d5\r\nENV APACHE_RUN_USER www-data\r\nENV APACHE_RUN_GROUP www-data\r\nENV APACHE_PID_FILE \/var\/run\/apache2.pid\r\nENV APACHE_RUN_DIR \/var\/run\/apache2\r\nENV APACHE_LOG_DIR \/var\/log\/apache2\r\nENV APACHE_LOCK_DIR \/var\/lock\/apache2\r\nEXPOSE 80\r\nCMD [\"apachectl\", \"-D\", \"FOREGROUND\"]<\/pre>\r\n\r\n\u7279\u7b46\u3059\u3079\u304d\u5185\u5bb9\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<br>\r\n<br>\r\n1. \u4eca\u56de PHP7.2 \u3092\u5229\u7528\u3059\u308b\u305f\u3081\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059\u3002<br>\r\n<br>\r\n2. Apache\u306e\u8a2d\u5b9a\u306e\u305f\u3081\u3001\u30d5\u30a1\u30a4\u30eb\u30922\u3064\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002<br>\r\n<br>\r\n3. CakePHP \u3092\u5229\u7528\u3059\u308b\u305f\u3081\u3001 composer \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\u3053\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u306f compose install \u3067\u304d\u306a\u3044\u306e\u3067\u3001\u305d\u308c\u306f docker-compser.yml \u306b\u304a\u3044\u3066\u51e6\u7406\u3057\u307e\u3059\u3002<br>\r\n<br>\r\n\u30b5\u30fc\u30d0\u306b\u30b3\u30d4\u30fc\u3059\u308b Apache\u7528\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb2\u3064\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<br>\r\n<br>\r\n<h3>000-default.conf<\/h3>\r\n<pre>&lt;VirtualHost *:80&gt;\r\n    ServerAdmin webmaster@localhost\r\n    DocumentRoot \/var\/www\/html\/***\r\n    ServerName ***.com\r\n    ErrorLog ${APACHE_LOG_DIR}\/error.log\r\n    CustomLog ${APACHE_LOG_DIR}\/access.log combined\r\n&lt;\/VirtualHost&gt;<\/pre>\r\n\r\n\r\n\u4e3b\u306b DocumentRoot \u306e\u8a2d\u5b9a\u3067\u3059\u3002\u9069\u5b9c\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\r\n\r\n<h3>apache2.conf<\/h3>\r\n<pre>DefaultRuntimeDir ${APACHE_RUN_DIR}\r\n\r\nPidFile ${APACHE_PID_FILE}\r\n\r\nTimeout 300\r\n\r\nKeepAlive On\r\n\r\nMaxKeepAliveRequests 100\r\n\r\nKeepAliveTimeout 5\r\n\r\nUser ${APACHE_RUN_USER}\r\nGroup ${APACHE_RUN_GROUP}\r\n\r\nHostnameLookups Off\r\n\r\nErrorLog ${APACHE_LOG_DIR}\/error.log\r\n\r\nLogLevel warn\r\n\r\nIncludeOptional mods-enabled\/*.load\r\nIncludeOptional mods-enabled\/*.conf\r\n\r\nInclude ports.conf\r\n\r\n&lt;Directory \/&gt;\r\n        Options FollowSymLinks\r\n        AllowOverride All\r\n        Require all denied\r\n&lt;\/Directory&gt;\r\n\r\n&lt;Directory \/usr\/share&gt;\r\n        AllowOverride None\r\n        Require all granted\r\n&lt;\/Directory&gt;\r\n\r\n&lt;Directory \/var\/www\/&gt;\r\n        Options Indexes FollowSymLinks\r\n        AllowOverride All\r\n        Require all granted\r\n&lt;\/Directory&gt;\r\n\r\nAccessFileName .htaccess\r\n\r\n&lt;FilesMatch \"^\\.ht\"&gt;\r\n        Require all denied\r\n&lt;\/FilesMatch&gt;\r\n\r\nLogFormat \"%v:%p %h %l %u %t \\\"%r\\\" %&gt;s %O \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" vhost_combined\r\nLogFormat \"%h %l %u %t \\\"%r\\\" %&gt;s %O \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" combined\r\nLogFormat \"%h %l %u %t \\\"%r\\\" %&gt;s %O\" common\r\nLogFormat \"%{Referer}i -&gt; %U\" referer\r\nLogFormat \"%{User-agent}i\" agent\r\n\r\nIncludeOptional conf-enabled\/*.conf\r\n\r\nIncludeOptional sites-enabled\/*.conf<\/pre>\r\n\r\n\u30b5\u30fc\u30d0\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3001\u4e3b\u306b \/var\/www \u306e\u8a2d\u5b9a\u3067\u3059\u3002<br>\r\n<br>\r\n\u4e0a\u8a18\u3067docker-compose \u3092\u8d77\u52d5\u3057\u307e\u3057\u3087\u3046\u3002<br>\r\n<br>\r\n<pre>docker-compose build\r\ndocker-compose up -d<\/pre>\r\n<br>\r\n\u3053\u308c\u3067CakePHP \u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u8d77\u52d5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br>\r\n<br>\r\n<h1>\u307e\u3068\u3081<\/h1>\r\n\r\n\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3088\u308a\u5909\u66f4\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u306a\u3044\u8a2d\u5b9a\u304c\u3042\u308b\u3068\u601d\u3044\u307e\u3059\u304c\u3001\u4e00\u5ea6\u8a2d\u5b9a\u3059\u308c\u3070\u4eca\u5f8c\u306f\u82e6\u52b4\u3057\u306a\u3044\u306e\u3067\u975e\u5e38\u306b\u4fbf\u5229\u3067\u3059\u3002\u4ee5\u524d\u306f Virtual PC \u3092\u4f7f\u3063\u3066\u304a\u308a\u4e0d\u5b89\u5b9a\u306b\u306a\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3057\u305f\u304c\u3001 Docker \u306b\u79fb\u884c\u3057\u305f\u4eca\u3067\u306f\u5b89\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002\u305c\u3072 Docker \u3092\u6d3b\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br>","protected":false},"excerpt":{"rendered":"<p>Docker Docker \u306f\u958b\u767a\u74b0\u5883\u3092\u69cb\u7bc9\u3059\u308b\u306e\u306b\u3068\u3066\u3082\u4fbf\u5229\u3067\u3001\u65b0\u3057\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7acb\u3061\u4e0a\u3052\u308b\u6642\u306f\u306a\u308b\u3079\u304f Docker \u3067\u74b0\u5883\u69cb\u7bc9\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u308c\u3060\u3051\u3067\u306f\u7269\u8db3\u308a\u305a\u3001\u6700\u8fd1\u306f\u904e\u53bb\u306e\u958b\u767a\u74b0\u5883\u3082 Docker \u3078\u306e\u79fb\u884c\u3092\u9032\u3081\u3066\u3044\u307e\u3059\u3002 \u958b\u767a\u74b0\u5883&#8230;<\/p>","protected":false},"author":1,"featured_media":2782,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,4,51],"tags":[118,224,242],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/gb-j.com\/wp-json\/wp\/v2\/posts\/2775"}],"collection":[{"href":"https:\/\/gb-j.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gb-j.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gb-j.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gb-j.com\/wp-json\/wp\/v2\/comments?post=2775"}],"version-history":[{"count":3,"href":"https:\/\/gb-j.com\/wp-json\/wp\/v2\/posts\/2775\/revisions"}],"predecessor-version":[{"id":2781,"href":"https:\/\/gb-j.com\/wp-json\/wp\/v2\/posts\/2775\/revisions\/2781"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gb-j.com\/wp-json\/wp\/v2\/media\/2782"}],"wp:attachment":[{"href":"https:\/\/gb-j.com\/wp-json\/wp\/v2\/media?parent=2775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gb-j.com\/wp-json\/wp\/v2\/categories?post=2775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gb-j.com\/wp-json\/wp\/v2\/tags?post=2775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}