{"id":1039,"date":"2025-06-12T11:13:47","date_gmt":"2025-06-12T03:13:47","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1039.html"},"modified":"2025-06-12T11:13:47","modified_gmt":"2025-06-12T03:13:47","slug":"%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8docker-compose%e5%bc%80%e5%8f%91symfony%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1039.html","title":{"rendered":"\u5982\u4f55\u4f7f\u7528Docker Compose\u5f00\u53d1Symfony\u5e94\u7528\u7a0b\u5e8f"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#20351;&#29992;Docker Compose&#24320;&#21457;Symfony&#24212;&#29992;&#31243;&#24207;&#26159;&#19968;&#31181;&#39640;&#25928;&#19988;&#28789;&#27963;&#30340;&#26041;&#27861;&#65292;&#23427;&#20801;&#35768;&#20320;&#22312;&#21333;&#20010;&#23481;&#22120;&#20013;&#36816;&#34892;&#22810;&#20010;&#26381;&#21153;&#65292;&#24182;&#19988;&#21487;&#20197;&#36731;&#26494;&#22320;&#36827;&#34892;&#37096;&#32626;&#21644;&#31649;&#29702;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#20351;&#29992;Docker Compose&#24320;&#21457;Symfony&#24212;&#29992;&#31243;&#24207;&#30340;&#35814;&#32454;&#27493;&#39588;&#65306;<\/p>\n<h3>1. &#23433;&#35013;&#24517;&#35201;&#30340;&#24037;&#20855;<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102;&#20197;&#19979;&#24037;&#20855;&#65306;<\/p>\n<ul>\n<li>Docker<\/li>\n<li>Docker Compose<\/li>\n<\/ul>\n<p>&#20320;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#21629;&#20196;&#26816;&#26597;&#36825;&#20123;&#24037;&#20855;&#26159;&#21542;&#24050;&#23433;&#35013;&#65306;<\/p>\n<pre><code class=\"language-bash\">docker --version\ndocker-compose --version<\/code><\/pre>\n<h3>2. &#21019;&#24314;&#39033;&#30446;&#32467;&#26500;<\/h3>\n<p>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#30446;&#24405;&#24182;&#21021;&#22987;&#21270;&#19968;&#20010;Git&#20179;&#24211;&#65306;<\/p>\n<pre><code class=\"language-bash\">mkdir symfony-project\ncd symfony-project\ngit init<\/code><\/pre>\n<h3>3. &#21021;&#22987;&#21270;Composer<\/h3>\n<p>&#22312;&#39033;&#30446;&#26681;&#30446;&#24405;&#19979;&#21021;&#22987;&#21270;Composer&#65306;<\/p>\n<pre><code class=\"language-bash\">composer init<\/code><\/pre>\n<p>&#25353;&#29031;&#25552;&#31034;&#22635;&#20889;&#39033;&#30446;&#30340;&#21517;&#31216;&#12289;&#29256;&#26412;&#21495;&#31561;&#20449;&#24687;&#12290;<\/p>\n<h3>4. &#28155;&#21152;&#20381;&#36182;<\/h3>\n<p>&#28155;&#21152;Symfony&#21644;&#19968;&#20123;&#24120;&#29992;&#30340;PHP&#25193;&#23637;&#21040;<code>composer.json<\/code>&#25991;&#20214;&#20013;&#65306;<\/p>\n<pre><code class=\"language-json\">{\n    \"name\": \"symfony\/project\",\n    \"type\": \"project\",\n    \"description\": \"A basic Symfony project skeleton\",\n    \"require\": {\n        \"php\": \"^7.4|^8.0\",\n        \"symfony\/symfony\": \"^5.4\",\n        \"doctrine\/orm\": \"^3.0\",\n        \"twig\/twig\": \"^3.0\"\n    },\n    \"autoload\": {\n        \"psr-4\": {\n            \"App\": \"src\/\"\n        }\n    },\n    \"scripts\": {\n        \"serve\": \"symfony server:start\"\n    }\n}<\/code><\/pre>\n<h3>5. &#21019;&#24314;Dockerfile<\/h3>\n<p>&#22312;&#39033;&#30446;&#26681;&#30446;&#24405;&#19979;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026;<code>Dockerfile<\/code>&#30340;&#25991;&#20214;&#65292;&#24182;&#28155;&#21152;&#20197;&#19979;&#20869;&#23481;&#65306;<\/p>\n<pre><code class=\"language-Dockerfile\"># &#20351;&#29992;&#23448;&#26041;&#30340;PHP&#38236;&#20687;&#20316;&#20026;&#22522;&#30784;&#38236;&#20687;\nFROM php:7.4-fpm\n\n# &#35774;&#32622;&#24037;&#20316;&#30446;&#24405;\nWORKDIR \/var\/www\/html\n\n# &#22797;&#21046;&#39033;&#30446;&#25991;&#20214;&#21040;&#24037;&#20316;&#30446;&#24405;\nCOPY . .\n\n# &#23433;&#35013;&#25152;&#26377;&#20381;&#36182;\nRUN composer install --optimize-autoloader\n\n# &#37197;&#32622;Nginx&#20197;&#25903;&#25345;Symfony\nRUN mkdir -p \/etc\/nginx\/sites-available &amp;&amp; \n    ln -s \/var\/www\/html\/index.php \/etc\/nginx\/sites-available\/default &amp;&amp; \n    nginx -t &amp;&amp; \n    systemctl start nginx &amp;&amp; \n    systemctl enable nginx<\/code><\/pre>\n<h3>6. &#21019;&#24314;Docker Compose&#25991;&#20214;<\/h3>\n<p>&#22312;&#39033;&#30446;&#26681;&#30446;&#24405;&#19979;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026;<code>docker-compose.yml<\/code>&#30340;&#25991;&#20214;&#65292;&#24182;&#28155;&#21152;&#20197;&#19979;&#20869;&#23481;&#65306;<\/p>\n<pre><code class=\"language-yaml\">version: '3.8'\n\nservices:\n  web:\n    image: symfony\/web-server:5.4\n    ports:\n      - \"80:80\"\n    volumes:\n      - .:\/var\/www\/html\n    depends_on:\n      - db\n\n  db:\n    image: mysql:8.0\n    environment:\n      MYSQL_ROOT_PASSWORD: example\n      MYSQL_DATABASE: symfony\n      MYSQL_USER: root\n      MYSQL_PASSWORD: example\n    volumes:\n      - db-data:\/var\/lib\/mysql\n\nvolumes:\n  db-data:<\/code><\/pre>\n<h3>7. &#21551;&#21160;&#39033;&#30446;<\/h3>\n<p>&#22312;&#39033;&#30446;&#26681;&#30446;&#24405;&#19979;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#26469;&#21551;&#21160;&#39033;&#30446;&#65306;<\/p>\n<pre><code class=\"language-bash\">docker-compose up -d<\/code><\/pre>\n<p>&#36825;&#23558;&#21551;&#21160;&#20004;&#20010;&#26381;&#21153;&#65306;&#19968;&#20010;Web&#26381;&#21153;&#22120;&#21644;&#19968;&#20010;MySQL&#25968;&#25454;&#24211;&#12290;&#20320;&#21487;&#20197;&#36890;&#36807;&#35775;&#38382;<code>http:\/\/localhost<\/code>&#26469;&#26597;&#30475;&#20320;&#30340;Symfony&#24212;&#29992;&#12290;<\/p>\n<h3>&#31034;&#20363;&#20195;&#30721;&#27493;&#39588;<\/h3>\n<p>&#20551;&#35774;&#20320;&#24819;&#22312;Symfony&#24212;&#29992;&#31243;&#24207;&#20013;&#28155;&#21152;&#19968;&#20010;&#31616;&#21333;&#30340;&#25511;&#21046;&#22120;&#26469;&#22788;&#29702;GET&#35831;&#27714;&#12290;&#20320;&#21487;&#20197;&#25353;&#29031;&#20197;&#19979;&#27493;&#39588;&#36827;&#34892;&#25805;&#20316;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#21019;&#24314;&#25511;&#21046;&#22120;<\/strong>&#65306;\n&#22312;<code>src\/Controller<\/code>&#30446;&#24405;&#19979;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026;<code>HelloController.php<\/code>&#30340;&#25991;&#20214;&#65292;&#24182;&#28155;&#21152;&#20197;&#19979;&#20869;&#23481;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppController;\n\nuse SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass HelloController extends AbstractController\n{\n   public function index(): Response\n   {\n       return $this-&gt;render('hello.html.twig', [\n           'message' =&gt; 'Hello, World!',\n       ]);\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#21019;&#24314;&#27169;&#26495;<\/strong>&#65306;\n&#22312;<code>templates<\/code>&#30446;&#24405;&#19979;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026;<code>hello.html.twig<\/code>&#30340;&#25991;&#20214;&#65292;&#24182;&#28155;&#21152;&#20197;&#19979;&#20869;&#23481;&#65306;<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n   &lt;meta charset=\"UTF-8\"&gt;\n   &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n   &lt;title&gt;Hello Symfony&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n   &lt;h1&gt;{{ message }}&lt;\/h1&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#27979;&#35797;&#25511;&#21046;&#22120;<\/strong>&#65306;\n&#35775;&#38382;<code>http:\/\/localhost\/hello<\/code>&#65292;&#20320;&#24212;&#35813;&#20250;&#30475;&#21040;&ldquo;Hello, World!&rdquo;&#30340;&#39029;&#38754;&#12290;<\/p>\n<\/li>\n<\/ol>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#23601;&#21487;&#20197;&#20351;&#29992;Docker Compose&#24320;&#21457;&#19968;&#20010;&#22522;&#26412;&#30340;Symfony&#24212;&#29992;&#31243;&#24207;&#20102;&#12290;&#38543;&#30528;&#39033;&#30446;&#30340;&#25193;&#23637;&#65292;&#20320;&#21487;&#20197;&#28155;&#21152;&#26356;&#22810;&#30340;&#26381;&#21153;&#65288;&#22914;&#32531;&#23384;&#26381;&#21153;&#12289;&#28040;&#24687;&#38431;&#21015;&#31561;&#65289;&#65292;&#24182;&#19988;&#21487;&#20197;&#36890;&#36807;Docker Compose&#36731;&#26494;&#22320;&#36827;&#34892;&#37096;&#32626;&#21644;&#31649;&#29702;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#20171;&#32461;<\/h2><p>Docker &#26159;&#19968;&#20010;&#24179;&#21488;&#65292;&#20801;&#35768;&#24744;&#23558;&#24212;&#29992;&#31243;&#24207;&#21450;&#20854;&#29615;&#22659;&#23553;&#35013;&#21040;&#23481;&#22120;&#20013;&#65292;&#30830;&#20445;&#22312;&#22810;&#20010;&#24320;&#21457;&#21644;&#37096;&#32626;&#38454;&#27573;&#30340;&#21487;&#19968;&#33268;&#24615;&#12290;Symfony &#26159;&#19968;&#20010;&#39640;&#24615;&#33021;&#30340; PHP &#26694;&#26550;&#65292;&#29992;&#20110;&#24320;&#21457; Web &#24212;&#29992;&#31243;&#24207;&#12290;<\/p><p>&#20351;&#29992;Symfony&#21644;Docker Compose&#36827;&#34892;&#24320;&#21457;&#21487;&#20197;&#26174;&#33879;&#31616;&#21270;&#24744;&#30340;&#24037;&#20316;&#27969;&#31243;&#65292;&#20351;&#24744;&#33021;&#22815;&#26080;&#32541;&#22320;&#36827;&#34892;&#24320;&#21457;&#12289;&#27979;&#35797;&#21644;&#37096;&#32626;&#36807;&#31243;&#12290;&#26412;&#25945;&#31243;&#23558;&#25351;&#23548;&#24744;&#36890;&#36807;&#35774;&#32622;&#19968;&#20010;&#22522;&#20110;Docker Compose&#30340;Symfony&#24212;&#29992;&#29615;&#22659;&#26469;&#36880;&#27493;&#36827;&#34892;&#65292;&#20174;&#22522;&#26412;&#29615;&#22659;&#24320;&#22987;&#65292;&#36880;&#28176;&#36807;&#28193;&#21040;&#26356;&#39640;&#32423;&#21035;&#30340;&#37197;&#32622;&#12290;&#22312;&#24320;&#22987;&#25945;&#31243;&#20043;&#21069;&#65292;&#35831;&#30830;&#20445;&#24050;&#32463;&#22312;&#26426;&#22120;&#19978;&#23433;&#35013;&#20102;Docker&#21644;Docker Compose&#12290;<\/p><h2>&#27493;&#39588;&#26469;&#23433;&#35013;Symfony&#21644;Docker Compose<\/h2><h3>&#27493;&#39588;1 &#8211; &#35774;&#32622;&#39033;&#30446;<\/h3><p>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;Symfony&#24212;&#29992;&#65292;&#36816;&#34892;Symfony&#21629;&#20196;&#34892;&#24037;&#20855;&#12290;<\/p><pre><code>symfony new my_symfony_app --full<\/code><\/pre><p>&#25509;&#19979;&#26469;&#65292;&#36890;&#36807;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;Docker&#29615;&#22659;&#26469;&#21021;&#22987;&#21270;&#23427;&#12290;<code>docker-compose.yml<\/code>&#23558;&#25991;&#20214;&#25918;&#22312;&#20320;&#30340;Symfony&#39033;&#30446;&#30340;&#26681;&#30446;&#24405;&#19979;&#12290;<\/p><pre><code>version: '3'\n\n services:\n  app:\n    build:\n      context: .\n      dockerfile: Dockerfile\n    volumes:\n      - .:\/var\/www\/html\n    ports:\n      - '8000:8000'\n<\/code><\/pre><p>&#36825;&#31181;&#22522;&#26412;&#37197;&#32622;&#20026;&#24744;&#30340;&#24212;&#29992;&#35774;&#32622;&#20102;&#19968;&#20010;&#26381;&#21153;&#65292;&#23558;&#24403;&#21069;&#30446;&#24405;&#25346;&#36733;&#21040;&#23481;&#22120;&#20013;&#65292;&#24182;&#23558;&#31471;&#21475; 8000 &#23637;&#31034;&#21040;&#20027;&#26426;&#26426;&#19978;&#12290;<\/p><h3>&#27493;&#39588; 2 &ndash; &#37197;&#32622; PHP &#29615;&#22659;<\/h3><p>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#26356;&#22810;&#30340;&#20449;&#24687;&#25110;&#20869;&#23481;&#65292;&#25105;&#20250;&#23613;&#21147;&#24110;&#21161;&#24744;&#23436;&#25104;&#20219;&#21153;&#12290;<code>Dockerfile<\/code>&#22312;&#26681;&#30446;&#24405;&#19979;&#65292;&#38468;&#26377;&#26500;&#24314;PHP&#29615;&#22659;&#25152;&#38656;&#30340;&#35828;&#26126;&#12290;<\/p><pre><code>FROM php:7.4-fpm\n\nRUN apt-get update &amp;&amp; \n apt-get install -y \n zlib1g-dev \n g++ \n git \n libicu-dev \n zip \n libzip-dev \n unzip &amp;&amp; \n docker-php-ext-install intl opcache pdo pdo_mysql zip\n\nCOPY --from=composer:latest \/usr\/bin\/composer \/usr\/bin\/composer\n\nWORKDIR \/var\/www\/html\n\nRUN PATH=$PATH:\/var\/www\/html\/bin:\/var\/www\/html\/vendor\/bin\n\nCMD [\"php-fpm\"]<\/code><\/pre><p>&#36825;&#20010;Dockerfile&#20174;&#19968;&#20010;&#22522;&#30784;&#30340;PHP&#38236;&#20687;&#24320;&#22987;&#65292;&#23433;&#35013;&#20102;&#24517;&#35201;&#30340;&#25193;&#23637;&#21644;Composer&#65292;&#35774;&#32622;&#24037;&#20316;&#30446;&#24405;&#65292;&#24182;&#35843;&#25972;PATH&#12290;<\/p><h3>&#27493;&#39588; 3 &ndash; MySQL &#26381;&#21153;<\/h3><p>&#35201;&#20026;&#24744;&#30340;&#31995;&#32479;&#28155;&#21152;&#19968;&#20010;MySQL&#26381;&#21153;&#65292;&#35831;&#25353;&#29031;&#20197;&#19979;&#27493;&#39588;&#25805;&#20316;&#65306;\n\n&#39318;&#20808;&#65292;&#30830;&#20445;&#24050;&#32463;&#23433;&#35013;&#20102;MySQL&#26381;&#21153;&#22120;&#12290;&#22914;&#26524;&#23578;&#26410;&#23433;&#35013;&#65292;&#21487;&#20197;&#36890;&#36807;&#21253;&#31649;&#29702;&#22120;&#65288;&#22914;apt-get&#25110;yum&#65289;&#36827;&#34892;&#23433;&#35013;&#12290;\n\n&#21551;&#21160;MySQL&#26381;&#21153;&#65306;\nsudo systemctl start mysql\n\n&#35774;&#32622;MySQL&#26381;&#21153;&#22312;&#21551;&#21160;&#26102;&#33258;&#21160;&#21551;&#21160;&#65306;\nsudo systemctl enable mysql\n\n&#20197;root&#29992;&#25143;&#30331;&#24405;&#24182;&#26816;&#26597;MySQL&#26381;&#21153;&#29366;&#24577;&#65306;\nsudo systemctl status mysql\n\n&#22914;&#26524;&#38656;&#35201;&#65292;&#21487;&#20197;&#26356;&#25913;MySQL&#30340;&#40664;&#35748;&#23494;&#30721;&#25110;&#20854;&#20182;&#35774;&#32622;&#12290;&#35831;&#21442;&#32771;MySQL&#23448;&#26041;&#25991;&#26723;&#33719;&#21462;&#35814;&#32454;&#20449;&#24687;&#12290;\n\n&#23436;&#25104;&#20197;&#19978;&#27493;&#39588;&#21518;&#65292;&#24744;&#23601;&#21487;&#20197;&#36890;&#36807;&#21629;&#20196;&#34892;&#35775;&#38382;MySQL&#25968;&#25454;&#24211;&#20102;&#12290;&#20363;&#22914;&#65292;&#36755;&#20837;&#20197;&#19979;&#21629;&#20196;&#36830;&#25509;&#21040;MySQL&#65306;\nmysql -u root -p\n\n&#35831;&#27880;&#24847;&#65292;&#20855;&#20307;&#30340;&#21629;&#20196;&#21644;&#36873;&#39033;&#21487;&#33021;&#22240;&#25805;&#20316;&#31995;&#32479;&#21644;&#29256;&#26412;&#30340;&#19981;&#21516;&#32780;&#26377;&#25152;&#24046;&#24322;&#12290;&#22312;&#25191;&#34892;&#20219;&#20309;&#25805;&#20316;&#20043;&#21069;&#65292;&#35831;&#30830;&#20445;&#22791;&#20221;&#37325;&#35201;&#25968;&#25454;&#65292;&#24182;&#20102;&#35299;&#28508;&#22312;&#30340;&#39118;&#38505;&#12290;<code>docker-compose.yml<\/code>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#65292;&#25105;&#23558;&#20026;&#24744;&#36827;&#34892;&#32763;&#35793;&#12290;<\/p><pre><code>version: '3'\n\nservices:\n  # ... existing services\n\n  mysql:\n    image: mysql:5.7\n    volumes:\n      - db_data:\/var\/lib\/mysql\n    environment:\n      MYSQL_ROOT_PASSWORD: root\n      MYSQL_DATABASE: symfony\n      MYSQL_USER: symfony\n      MYSQL_PASSWORD: symfony\n\nvolumes:\n  db_data:<\/code><\/pre><p>&#35813;&#26381;&#21153;&#20351;&#29992;MySQL&#38236;&#20687;&#65292;&#35774;&#32622;&#25345;&#20037;&#21367;&#65292;&#24182;&#25552;&#20379;&#29615;&#22659;&#21464;&#37327;&#20197;&#37197;&#32622;&#25968;&#25454;&#24211;&#12290;<\/p><h3>&#27493;&#39588; 4 &#8211; Nginx &#26381;&#21153;<\/h3><p>&#20320;&#38656;&#35201;&#23433;&#35013;&#19968;&#20010;Nginx&#26381;&#21153;&#26469;&#25176;&#31649;&#20320;&#30340;Symfony&#24212;&#29992;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;Nginx&#37197;&#32622;&#31034;&#20363;&#65306;<\/p><pre><code>version: '3'\n\nservices:\n  # ... existing services\n\n  nginx:\n    image: nginx:latest\n    volumes:\n      - .:\/var\/www\/html:ro\n      - .\/docker\/nginx\/default.conf:\/etc\/nginx\/conf.d\/default.conf\n    depends_on:\n      - app\n    ports:\n      - '80:80'\n<\/code><\/pre><p>&#19982;&#20043;&#23545;&#24212;&#30340; Nginx &#37197;&#32622;&#25991;&#20214;<code>default.conf<\/code>&#65306;<\/p><pre><code>server {\n    listen 80;\n    server_name localhost;\n\n    root \/var\/www\/html\/public;\n\n    location \/ {\n        try_files $uri \/index.php$is_args$args;\n    }\n\n    location ~ ^\/index.php(\/|$) {\n        fastcgi_pass app:9000;\n        fastcgi_split_path_info ^(.+.php)(\/.*)$;\n        include fastcgi_params;\n        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;\n        fastcgi_param DOCUMENT_ROOT $realpath_root;\n        internal;\n    }\n\n    location ~ .php$ {\n        return 404;\n    }\n\n    error_log \/var\/log\/nginx\/app_error.log;\n    access_log \/var\/log\/nginx\/app_access.log;\n}<\/code><\/pre><p>&#35813;&#25991;&#20214;&#23450;&#20041;&#20102;&#26381;&#21153;&#22120;&#35774;&#32622;&#12289;&#25991;&#26723;&#26681;&#30446;&#24405;&#20197;&#21450;&#22788;&#29702;&#36890;&#36807;FastCGI&#25191;&#34892;&#30340;PHP&#25991;&#20214;&#30340;&#34892;&#20026;&#12290;<\/p><h3>&#27493;&#39588; 5 &#8211; Symfony &#29615;&#22659;&#21464;&#37327;<\/h3><p>&#22312;&#20351;&#29992;Docker&#31649;&#29702;Symfony&#29615;&#22659;&#21464;&#37327;&#38750;&#24120;&#31616;&#21333;&#12290;&#20320;&#21487;&#20197;&#30452;&#25509;&#22312;Docker&#20013;&#35774;&#32622;Symfony&#30340;&#29615;&#22659;&#21464;&#37327;&#12290;<code>docker-compose.yml<\/code>&#22312;&#24212;&#29992;&#26381;&#21153;&#19979;&#65306;<\/p><pre><code>version: '3'\n\nservices:\n  # ... existing services\n\n  app:\n    # ... existing configuration\n    environment:\n      DATABASE_URL: mysql:\/\/symfony:symfony@mysql:3306\/symfony\n\n  # ... other services\n<\/code><\/pre><h3>&#27493;&#39588; 6 &#8211; &#36816;&#34892;&#23481;&#22120;<\/h3><p>&#21551;&#21160;&#25152;&#26377;&#23450;&#20041;&#22312;&#20320;&#20013;&#30340;&#26381;&#21153;&#12290;<code>docker-compose.yml<\/code>run:<\/p><pre><code>docker-compose up -d<\/code><\/pre><p>&#36825;&#23558;&#20250;&#26500;&#24314;&#38236;&#20687;&#24182;&#21551;&#21160;&#23481;&#22120;&#22312;&#21518;&#21488;&#36816;&#34892;&#12290;&#35831;&#35775;&#38382;&#12290;<code>http:\/\/localhost<\/code>&#35831;&#22312;&#24744;&#30340;&#27983;&#35272;&#22120;&#20013;&#26597;&#30475;&#24744;&#30340;Symfony&#24212;&#29992;&#31243;&#24207;&#12290;<\/p><h3>&#31532;7&#27493; &#8211; &#39640;&#32423;&#37197;&#32622;<\/h3><p>&#23545;&#20110;&#26356;&#22797;&#26434;&#30340;&#39033;&#30446;&#65292;&#21487;&#33021;&#38656;&#35201;&#20351;&#29992;&#35832;&#22914;Redis&#12289;Elasticsearch&#25110;&#28040;&#24687;&#38431;&#21015;&#31561;&#38468;&#21152;&#24037;&#20855;&#12290;&#36825;&#20123;&#24037;&#20855;&#30340;&#28155;&#21152;&#26041;&#24335;&#31867;&#20284;&#20110;&#26381;&#21153;&#12290;<code>docker-compose.yml<\/code>&#24403;&#20320;&#38656;&#35201;&#26102;&#65292;&#20250;&#19982;&#20320;&#30340;&#24212;&#29992;&#36827;&#34892;&#38142;&#25509;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#24744;&#24050;&#23398;&#20064;&#22914;&#20309;&#20351;&#29992;Docker Compose&#26500;&#24314;Symfony&#24212;&#29992;&#31243;&#24207;&#65292;&#20026;&#24320;&#21457;&#25552;&#20379;&#19968;&#20010;&#21487;&#38752;&#19988;&#21487;&#37325;&#22797;&#30340;&#29615;&#22659;&#12290;&#36890;&#36807;&#23481;&#22120;&#21270;&#24744;&#30340;&#24320;&#21457;&#29615;&#22659;&#65292;&#24744;&#21487;&#20197;&#30830;&#20445;&#22242;&#38431;&#22312;&#19968;&#20010;&#19968;&#33268;&#30340;&#35774;&#32622;&#19979;&#24037;&#20316;&#65292;&#26080;&#35770;&#20010;&#20154;&#26426;&#22120;&#37197;&#32622;&#22914;&#20309;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>Docker Compose &#26159;&#19968;&#20010;&#29992;&#20110;&#26500;&#24314; Docker &#23481;&#22120;&#30340;&#36731;&#37327;&#32423;&#37197;&#32622;&#24037;&#20855;&#12290;&#23427;&#20801;&#35768;&#24744;&#23558;&#22810;&#20010; Docker &#38236;&#20687;&#32452;&#21512;&#22312;&#19968;&#36215;&#65292;&#24182;&#20026;&#23427;&#20204;&#25351;&#23450;&#26381;&#21153;&#21644;&#20381;&#36182;&#20851;&#31995;&#12290;&#19979;&#38754;&#26159;&#22914;&#20309;&#20351;&#29992; Docker Compose &#24320;&#21457; Symfony &#24212;&#29992;&#31243;&#24207;&#30340;&#19968;&#20010;&#31616;&#21333;&#25351;&#21335;&#65306;<\/p>\n<h3>&#27493;&#39588; 1: &#21019;&#24314;&#39033;&#30446;&#30446;&#24405;<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#24744;&#26377;&#19968;&#20010;&#21517;&#20026; &#8220;symfony-app&#8221; &#30340;&#39033;&#30446;&#25991;&#20214;&#22841;&#12290;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#23376;&#30446;&#24405;&#65288;&#20363;&#22914;&#65292;&#8221;services&#8221;&#65289;&#65292;&#24182;&#23558;&#24744;&#30340; Symfony &#39033;&#30446;&#30340;&#28304;&#20195;&#30721;&#22797;&#21046;&#21040;&#36825;&#20010;&#30446;&#24405;&#12290;<\/p>\n<pre><code class=\"language-bash\">mkdir symfony-app\ncd symfony-app\/services<\/code><\/pre>\n<h3>&#27493;&#39588; 2: &#21019;&#24314; Dockerfile<\/h3>\n<p>&#22312;&#26032;&#21019;&#24314;&#30340;&#26381;&#21153;&#30446;&#24405;&#19979;&#65292;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026; <code>Dockerfile<\/code> &#30340;&#25991;&#20214;&#65292;&#29992;&#20110;&#23450;&#20041;&#24744;&#30340;&#24212;&#29992;&#38236;&#20687;&#12290;<\/p>\n<pre><code class=\"language-bash\">touch Dockerfile<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#22312; <code>Dockerfile<\/code> &#20013;&#28155;&#21152;&#20197;&#19979;&#20869;&#23481;&#65306;<\/p>\n<pre><code class=\"language-dockerfile\"># &#20351;&#29992;&#23448;&#26041; PHP &#26500;&#24314;&#29615;&#22659;\nFROM php:7.4-fpm\n\n# &#35774;&#32622;&#24037;&#20316;&#30446;&#24405;\nWORKDIR \/var\/www\/html\n\n# &#32534;&#35793;&#24182;&#23433;&#35013;&#25152;&#38656;&#30340;&#21253;\nRUN composer install --no-dev\n\n# &#36816;&#34892; Symfony &#24212;&#29992;\nCMD [\"php\", \"artisan\", \"serve\"]<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#20351;&#29992;&#23448;&#26041; PHP &#26500;&#24314;&#29615;&#22659;&#65292;&#35774;&#32622;&#20102;&#24037;&#20316;&#30446;&#24405; <code>\/var\/www\/html<\/code>&#65292;&#32534;&#35793;&#20102;&#25152;&#38656;&#30340; Composer &#21253;&#65292;&#24182;&#36816;&#34892;&#20102;&#19968;&#20010;&#40664;&#35748;&#30340; Symfony &#26381;&#21153;&#22120;&#12290;<\/p>\n<h3>&#27493;&#39588; 3: &#21019;&#24314; Docker-compose.yml &#25991;&#20214;<\/h3>\n<p>&#22312;&#39033;&#30446;&#26681;&#30446;&#24405;&#19979;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026; <code>Docker-compose.yml<\/code> &#30340;&#25991;&#20214;&#12290;<\/p>\n<pre><code class=\"language-yaml\">version: '3'\n\nservices:\n  web:\n    build:\n      context: services\/\n      dockerfile: Dockerfile\n    ports:\n      - \"8000:80\"\n    volumes:\n      - .:\/var\/www\/html<\/code><\/pre>\n<p>&#22312;&#36825;&#20010; YAML &#25991;&#20214;&#20013;&#65292;&#25105;&#20204;&#23450;&#20041;&#20102;&#20004;&#20010;&#26381;&#21153;&#65306;<code>web<\/code> &#21644; <code>app<\/code>. <code>build<\/code> &#25351;&#20196;&#21578;&#35785; Docker Compose &#22914;&#20309;&#26500;&#24314;&#23481;&#22120;&#65292;&#32780; <code>ports<\/code> &#25351;&#20196;&#35774;&#32622;&#30417;&#21548;&#31471;&#21475;&#65292;<code>volumes<\/code> &#25351;&#20196;&#23558;&#39033;&#30446;&#25991;&#20214;&#25346;&#36733;&#21040;&#23481;&#22120;&#20869;&#37096;&#12290;<\/p>\n<h3>&#27493;&#39588; 4: &#37197;&#32622; DCS (Docker Compose Server)<\/h3>\n<p>&#22312;&#39033;&#30446;&#26681;&#30446;&#24405;&#19979;&#65292;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#26469;&#21551;&#21160; Docker Compose &#26381;&#21153;&#22120;&#65306;<\/p>\n<pre><code class=\"language-bash\">docker-compose up -d<\/code><\/pre>\n<p>&#36825;&#23558;&#22312;&#21518;&#21488;&#21551;&#21160;&#25152;&#26377;&#26381;&#21153;&#65292;&#24182;&#19988;&#21487;&#20197;&#35775;&#38382; <a href=\"https:\/\/www.zhaozhao123.cn\/skin\/go?url=aHR0cDovL2xvY2FsaG9zdDo4MDAw\" rel=\"noopener noreferrer nofollow\">http:\/\/localhost:8000<\/a> &#26469;&#26597;&#30475;&#24744;&#30340; Symfony &#24212;&#29992;&#12290;<\/p>\n<h3>&#27493;&#39588; 5: &#20351;&#29992; Symfony &#35843;&#35797;&#19982;&#37096;&#32626;<\/h3>\n<p>&#29616;&#22312;&#65292;&#24744;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#20351;&#29992; Composer &#23433;&#35013;&#27169;&#22359;&#65292;&#36816;&#34892;&#26381;&#21153;&#22120;&#65292;&#35843;&#35797;&#24212;&#29992;&#31243;&#24207;&#31561;&#12290;&#22914;&#26524;&#38656;&#35201;&#36827;&#19968;&#27493;&#23450;&#21046;&#65292;&#35831;&#26597;&#38405;&#23448;&#26041;&#25991;&#26723;&#65306;<a href=\"https:\/\/www.zhaozhao123.cn\/skin\/go?url=aHR0cHM6Ly9zeW1mb255LmNvbS9kb2NzLzQuNC9jb21wb3Nlci5odG1s\" rel=\"noopener noreferrer nofollow\">https:\/\/symfony.com\/docs\/4.4\/composer.html<\/a><\/p>\n<p>&#36890;&#36807;&#19978;&#36848;&#27493;&#39588;&#65292;&#24744;&#24212;&#35813;&#24050;&#32463;&#25104;&#21151;&#22320;&#20351;&#29992; Docker Compose &#24320;&#21457;&#24182;&#37096;&#32626;&#20102; Symfony &#24212;&#29992;&#31243;&#24207;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#20351;&#29992;Docker Compose&#24320;&#21457;Symfony&#24212;&#29992;&#31243;&#24207;&#26159;&#19968;&#31181;&#39640;&#25928;&#038;#19988..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1039","my1js","type-my1js","status-publish","hentry","my1js2nav-symfony"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/1039","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=1039"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1039"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1039"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}