{"id":5095,"date":"2026-01-28T10:16:25","date_gmt":"2026-01-28T01:16:25","guid":{"rendered":"https:\/\/dennie.tokyo\/it\/?p=5095"},"modified":"2026-01-30T18:58:34","modified_gmt":"2026-01-30T09:58:34","slug":"%e3%80%90docker%e3%80%91nginx-php-fpm-laravel","status":"publish","type":"post","link":"https:\/\/dennie.tokyo\/it\/?p=5095","title":{"rendered":"\u3010docker\u3011nginx php-fpm Laravel"},"content":{"rendered":"\n<p>\u524d\u56de\u306f nginx\u3001php-fpm\u3092\u4f7f\u7528\u3057\u3066php\u5b9f\u884c\u74b0\u5883\u3092\u69cb\u7bc9\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<!--more-->\n\n\n\n<div class=\"title_box\"><span class=\"box-title\">\u524d\u56de<\/span>\n<p><a href=\"https:\/\/dennie.tokyo\/it\/?p=5084\" rel=\"noopener noreferrer\" target=\"_blank\">\u3010docker\u3011nginx php-fpm<\/a><\/p>\n<\/div>\n\n\n\n<p>\u4eca\u56de\u306fLaravel\u74b0\u5883\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u6210<\/h1>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u69cb\u6210\u3068\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>.\n\u251c\u2500\u2500 docker-compose.yml\n\u251c\u2500\u2500 app\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 docker\n\u2502\u00a0\u00a0     \u2514\u2500\u2500 Dockerfile \/\/ php-fpm\u306edocker\u30d5\u30a1\u30a4\u30eb\n\u251c\u2500\u2500 web\n\u2502   \u2514\u2500\u2500 docker\n\u2502       \u251c\u2500\u2500 conf\n\u2502       \u2502\u00a0\u00a0 \u2514\u2500\u2500 default.conf \/\/ nginx\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\n\u2502       \u2514\u2500\u2500 Dockerfile \/\/ nginx\u306edocker\u30d5\u30a1\u30a4\u30eb\n\u2514\u2500\u2500 src \/\/ Laravel\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea<\/code><\/pre><\/div>\n\n\n\n<h1 class=\"wp-block-heading\">\u5404\u30d5\u30a1\u30a4\u30eb\u306b\u3064\u3044\u3066<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">docker-compose<\/h2>\n\n\n\n<p>\u4eca\u56de\u4f7f\u7528\u3059\u308b docker-compose.yml \u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002\u306a\u304a\u3001\u524d\u56de\u3068\u5909\u66f4\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p><strong>docker-compose.yml<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>services:\n  # Nginx Service\n  web:\n    container_name: web-service\n    build:\n      context: .\n      dockerfile: .\/web\/docker\/Dockerfile\n    ports:\n      - &quot;80:80&quot;\n    depends_on:\n      - app\n\n  # PHP Service\n  app:\n    container_name: app-service\n    build:\n      context: .\n      dockerfile: .\/app\/docker\/Dockerfile\n    volumes:\n      - .\/src:\/var\/www\/html<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">WEB\u30b5\u30fc\u30d0 &#8211; nginx<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">nginx\u306edocker\u30d5\u30a1\u30a4\u30eb<\/h3>\n\n\n\n<p>\u4eca\u56deweb\u30b5\u30fc\u30d0\u306bnginx\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002nginx\u306edocker\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3057\u3001docker\u30b3\u30f3\u30c6\u30ca\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u306a\u304a\u3001\u524d\u56de\u3068\u5909\u66f4\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p><strong>Dockerfile<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>FROM nginx:latest\n\n# nginx\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\nCOPY .\/web\/docker\/conf\/default.conf \/etc\/nginx\/conf.d\/default.conf<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">nginx\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb<\/h3>\n\n\n\n<p>nginx\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002\u5909\u66f4\u70b9\u306f\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30eb\u30fc\u30c8\u306b\u306a\u308a\u307e\u3059\u3002Laravel\u306f public \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u53c2\u7167\u3059\u308b\u4e8b\u304c\u524d\u63d0\u306e\u70ba\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30eb\u30fc\u30c8\u3092\u5909\u66f4\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p><strong>default.conf<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>server {\n\n    # \u30dd\u30fc\u30c8\u756a\u53f7\n    listen 80;\n\n    # \u30b5\u30fc\u30d0\u540d\n    server_name localhost;\n\n    # \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30eb\u30fc\u30c8\n    root \/var\/www\/html\/public;\n    \n    # \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\n    index index.php index.html;\n    \n    # \u6587\u5b57\u30b3\u30fc\u30c9\n    charset utf-8;\n    \n    # \u30d5\u30a1\u30a4\u30eb\u78ba\u8a8d\u30c7\u30a3\u30ec\u30af\u30c6\u30a3\u30d6\n    location \/ {\n        try_files $uri $uri\/ \/index.php?$query_string;\n    }\n    \n    # ------------------------\n    # php-fpm \u306e\u8a2d\u5b9a\n    # ------------------------\n    location ~ \\.php$ {\n        include fastcgi_params;\n        fastcgi_pass app-service:9000;\n        fastcgi_index index.php;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">php-fpm\u30b3\u30f3\u30c6\u30ca<\/h2>\n\n\n\n<p>\u4eca\u56de\u306fphp\u3092\u5b9f\u884c\u3059\u308b\u70ba\u306bphp-fpm\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u305d\u306e\u70ba\u306ephp-fpm\u30b3\u30f3\u30c6\u30ca\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>Dockerfile<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code># \u30d9\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\nFROM php:8.4-fpm\n\n# \u5fc5\u8981\u306a\u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nRUN apt-get update && apt-get install -y \\\n     git \\\n     unzip \\\n     zip \\\n     && apt-get clean\n\n# docker hub \u4e0a\u306e\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u7279\u5b9a\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\nCOPY --from=composer:2.8.9 \/usr\/bin\/composer \/usr\/bin\/composer<\/code><\/pre><\/div>\n\n\n\n<p>Laravel\u306b\u5fc5\u8981\u306aphp\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002docker hub \u4e0a\u306e\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u7279\u5b9a\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3057\u3001composer\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u30b3\u30f3\u30c6\u30ca\u4f5c\u6210<\/h1>\n\n\n\n<p>docker\u30b3\u30f3\u30c6\u30ca\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u524d\u56de\u3068\u540c\u3058\u3067\u3059\u3002<\/p>\n\n\n\n<p><strong>\u30d3\u30eb\u30c9<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>docker-compose build<\/code><\/pre><\/div>\n\n\n\n<p><strong>\u30b3\u30f3\u30c6\u30ca\u751f\u6210<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>docker-compose up -d<\/code><\/pre><\/div>\n\n\n\n<p><strong>\u30b3\u30f3\u30c6\u30ca\u751f\u6210\u306e\u78ba\u8a8d<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>docker-compose ps<\/code><\/pre><\/div>\n\n\n\n<h1 class=\"wp-block-heading\">Laravel\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h1>\n\n\n\n<p>php-fpm\u30b3\u30f3\u30c6\u30ca\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u3001Laravel\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\u30ed\u30b0\u30a4\u30f3\u5f8c\u306e\u30ab\u30ec\u30f3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c <strong>\/var\/www\/html<\/strong> \u3067\u3042\u308b\u4e8b\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089Laravel\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u4e0b\u3055\u3044\u3002<\/p>\n\n\n\n<p><strong>\u30ed\u30b0\u30a4\u30f3<\/strong><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>docker-compose exec -it app bash<\/code><\/pre><\/div>\n\n\n\n<p>Laravel\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>composer create-project --prefer-dist laravel\/laravel .<\/code><\/pre><\/div>\n\n\n\n<h1 class=\"wp-block-heading\">\u52d5\u4f5c\u78ba\u8a8d<\/h1>\n\n\n\n<p>\u4ee5\u4e0b\u3092\u30d6\u30e9\u30a6\u30b6\u3067\u5b9f\u884c\u3059\u308b\u3068\u3001Laravel\u306e\u753b\u9762\u304c\u78ba\u8a8d\u51fa\u6765\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>http:\/\/localhost\/<\/code><\/pre><\/div>\n\n\n\n<h1 class=\"wp-block-heading\">\u6700\u5f8c\u306b<\/h1>\n\n\n\n<p>\u7279\u306b\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56de\u306f nginx\u3001php-fpm\u3092\u4f7f\u7528\u3057\u3066php\u5b9f\u884c\u74b0\u5883\u3092\u69cb\u7bc9\u3057\u307e\u3057\u305f\u3002<\/p>\n","protected":false},"author":1,"featured_media":5116,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,39],"tags":[],"class_list":["post-5095","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docker","category-nginx"],"_links":{"self":[{"href":"https:\/\/dennie.tokyo\/it\/index.php?rest_route=\/wp\/v2\/posts\/5095","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dennie.tokyo\/it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dennie.tokyo\/it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dennie.tokyo\/it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dennie.tokyo\/it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5095"}],"version-history":[{"count":7,"href":"https:\/\/dennie.tokyo\/it\/index.php?rest_route=\/wp\/v2\/posts\/5095\/revisions"}],"predecessor-version":[{"id":5103,"href":"https:\/\/dennie.tokyo\/it\/index.php?rest_route=\/wp\/v2\/posts\/5095\/revisions\/5103"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dennie.tokyo\/it\/index.php?rest_route=\/wp\/v2\/media\/5116"}],"wp:attachment":[{"href":"https:\/\/dennie.tokyo\/it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5095"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dennie.tokyo\/it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5095"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dennie.tokyo\/it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5095"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}