{"id":607,"date":"2021-08-30T17:56:52","date_gmt":"2021-08-30T17:56:52","guid":{"rendered":"http:\/\/robinluo.top\/?p=607"},"modified":"2021-08-30T17:56:52","modified_gmt":"2021-08-30T17:56:52","slug":"docker-compose-yml","status":"publish","type":"post","link":"https:\/\/robinluo.top\/?p=607","title":{"rendered":"docker-compose.yml"},"content":{"rendered":"\n<p>docker-compose.yml \u7528\u6765\u7f16\u5199docker\u5bb9\u5668\u5bf9\u8c61\u7684\u914d\u7f6e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '2'\nservices:\n  web:\n    image: dockercloud\/hello-world\n    ports:\n      - 8080\n    networks:\n      - front-tier\n      - back-tier\n \n  redis:\n    image: redis\n    links:\n      - web\n    networks:\n      - back-tier\n \n  lb:\n    image: dockercloud\/haproxy\n    ports:\n      - 80:80\n    links:\n      - web\n    networks:\n      - front-tier\n      - back-tier\n    volumes:\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock\n \nnetworks:\n  front-tier:\n    driver: bridge\n  back-tier:\n    driver: bridge<\/code><\/pre>\n\n\n\n<h4>2\uff0cimage<\/h4>\n\n\n\n<p>\u3000\u3000image\u662f\u6307\u5b9a\u670d\u52a1\u7684\u955c\u50cf\u540d\u79f0\u6216\u955c\u50cfID\u3002\u5982\u679c\u955c\u50cf\u5728\u672c\u5730\u4e0d\u5b58\u5728\uff0cCompose\u5c06\u4f1a\u5c1d\u8bd5\u62c9\u53d6\u955c\u50cf\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>123<\/td><td><code>services:<\/code><code>web:<\/code><code>image: hello-world<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4>&nbsp;\u3000\u30003\uff0cbuild<\/h4>\n\n\n\n<p>\u3000\u3000\u670d\u52a1\u9664\u4e86\u53ef\u4ee5\u57fa\u4e8e\u6307\u5b9a\u7684\u955c\u50cf\uff0c\u8fd8\u53ef\u4ee5\u57fa\u4e8e\u4e00\u4efdDockerfile\uff0c\u5728\u4f7f\u7528up\u542f\u52a8\u65f6\u6267\u884c\u6784\u5efa\u4efb\u52a1\uff0c\u6784\u5efa\u6807\u7b7e\u662fbuild\uff0c\u53ef\u4ee5\u6307\u5b9aDockerfile\u6240\u5728\u6587\u4ef6\u5939\u7684\u8def\u5f84\u3002Compose\u5c06\u4f1a\u5229\u7528Dockerfile\u81ea\u52a8\u6784\u5efa\u955c\u50cf\uff0c\u7136\u540e\u4f7f\u7528\u955c\u50cf\u542f\u52a8\u670d\u52a1\u5bb9\u5668\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<\/td><td><code>build:&nbsp;<\/code><code>\/path\/to\/build\/dir<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>&nbsp;\u3000\u3000\u4e5f\u53ef\u4ee5\u662f\u76f8\u5bf9\u8def\u5f84\uff0c\u53ea\u8981\u4e0a\u4e0b\u6587\u786e\u5b9a\u5c31\u53ef\u4ee5\u8bfb\u53d6\u5230Dockerfile\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<\/td><td><code>build: .<\/code><code>\/dir<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>&nbsp;\u3000\u3000\u8bbe\u5b9a\u4e0a\u4e0b\u6587\u6839\u76ee\u5f55\uff0c\u7136\u540e\u4ee5\u8be5\u76ee\u5f55\u4e3a\u51c6\u6307\u5b9aDockerfile\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>123<\/td><td><code>build:<\/code><code>context: ..\/<\/code><code>dockerfile: path<\/code><code>\/of\/Dockerfile<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>&nbsp;\u3000\u3000build\u90fd\u662f\u4e00\u4e2a\u76ee\u5f55\uff0c\u5982\u679c\u8981\u6307\u5b9aDockerfile\u6587\u4ef6\u9700\u8981\u5728build\u6807\u7b7e\u7684\u5b50\u7ea7\u6807\u7b7e\u4e2d\u4f7f\u7528dockerfile\u6807\u7b7e\u6307\u5b9a\u3002<br>\u5982\u679c\u540c\u65f6\u6307\u5b9aimage\u548cbuild\u4e24\u4e2a\u6807\u7b7e\uff0c\u90a3\u4e48Compose\u4f1a\u6784\u5efa\u955c\u50cf\u5e76\u4e14\u628a\u955c\u50cf\u547d\u540d\u4e3aimage\u503c\u6307\u5b9a\u7684\u540d\u5b57\u3002<\/p>\n\n\n\n<h4>\u3000\u30004,context<\/h4>\n\n\n\n<p>\u3000\u3000context\u9009\u9879\u53ef\u4ee5\u662fDockerfile\u7684\u6587\u4ef6\u8def\u5f84\uff0c\u4e5f\u53ef\u4ee5\u662f\u5230\u94fe\u63a5\u5230git\u4ed3\u5e93\u7684url\uff0c\u5f53\u63d0\u4f9b\u7684\u503c\u662f\u76f8\u5bf9\u8def\u5f84\u65f6\uff0c\u88ab\u89e3\u6790\u4e3a\u76f8\u5bf9\u4e8e\u64b0\u5199\u6587\u4ef6\u7684\u8def\u5f84\uff0c\u6b64\u76ee\u5f55\u4e5f\u662f\u53d1\u9001\u5230Docker\u5b88\u62a4\u8fdb\u7a0b\u7684context<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>12<\/td><td><code>build:<\/code><code>context: .<\/code><code>\/dir<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4>&nbsp;\u3000\u30005,dockerfile<\/h4>\n\n\n\n<p>\u3000\u3000\u4f7f\u7528dockerfile\u6587\u4ef6\u6765\u6784\u5efa\uff0c\u5fc5\u987b\u6307\u5b9a\u6784\u5efa\u8def\u5f84<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>123<\/td><td><code>build:<\/code><code>context: .<\/code><code>dockerfile: Dockerfile-alternate<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4>&nbsp;\u3000\u30006,commond<\/h4>\n\n\n\n<p>\u3000\u3000\u4f7f\u7528command\u53ef\u4ee5\u8986\u76d6\u5bb9\u5668\u542f\u52a8\u540e\u9ed8\u8ba4\u6267\u884c\u7684\u547d\u4ee4\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<\/td><td><code>command<\/code><code>: bundle&nbsp;<\/code><code>exec<\/code>&nbsp;<code>thin -p 3000<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4>&nbsp;\u3000\u30007,container_name<\/h4>\n\n\n\n<p>\u3000\u3000Compose\u7684\u5bb9\u5668\u540d\u79f0\u683c\u5f0f\u662f\uff1a&lt;\u9879\u76ee\u540d\u79f0&gt;&lt;\u670d\u52a1\u540d\u79f0&gt;&lt;\u5e8f\u53f7&gt;<br>\u53ef\u4ee5\u81ea\u5b9a\u4e49\u9879\u76ee\u540d\u79f0\u3001\u670d\u52a1\u540d\u79f0\uff0c\u4f46\u5982\u679c\u60f3\u5b8c\u5168\u63a7\u5236\u5bb9\u5668\u7684\u547d\u540d\uff0c\u53ef\u4ee5\u4f7f\u7528\u6807\u7b7e\u6307\u5b9a\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<\/td><td><code>container_name: app<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4>&nbsp;\u3000\u30008,depends_on<\/h4>\n\n\n\n<p>\u5728\u4f7f\u7528Compose\u65f6\uff0c\u6700\u5927\u7684\u597d\u5904\u5c31\u662f\u5c11\u6253\u542f\u52a8\u547d\u4ee4\uff0c\u4f46\u4e00\u822c\u9879\u76ee\u5bb9\u5668\u542f\u52a8\u7684\u987a\u5e8f\u662f\u6709\u8981\u6c42\u7684\uff0c\u5982\u679c\u76f4\u63a5\u4ece\u4e0a\u5230\u4e0b\u542f\u52a8\u5bb9\u5668\uff0c\u5fc5\u7136\u4f1a\u56e0\u4e3a\u5bb9\u5668\u4f9d\u8d56\u95ee\u9898\u800c\u542f\u52a8\u5931\u8d25\u3002\u4f8b\u5982\u5728\u6ca1\u542f\u52a8\u6570\u636e\u5e93\u5bb9\u5668\u7684\u65f6\u5019\u542f\u52a8\u5e94\u7528\u5bb9\u5668\uff0c\u5e94\u7528\u5bb9\u5668\u4f1a\u56e0\u4e3a\u627e\u4e0d\u5230\u6570\u636e\u5e93\u800c\u9000\u51fa\u3002depends_on\u6807\u7b7e\u7528\u4e8e\u89e3\u51b3\u5bb9\u5668\u7684\u4f9d\u8d56\u3001\u542f\u52a8\u5148\u540e\u7684\u95ee\u9898<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1234567891011<\/td><td><code>version:&nbsp;<\/code><code>'2'<\/code><code>services:<\/code><code>web:<\/code><code>build: .<\/code><code>depends_on:<\/code><code>- db<\/code><code>- redis<\/code><code>redis:<\/code><code>image: redis<\/code><code>db:<\/code><code>image: postgres<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>&nbsp;\u3000\u3000\u4e0a\u8ff0YAML\u6587\u4ef6\u5b9a\u4e49\u7684\u5bb9\u5668\u4f1a\u5148\u542f\u52a8redis\u548cdb\u4e24\u4e2a\u670d\u52a1\uff0c\u6700\u540e\u624d\u542f\u52a8web \u670d\u52a1\u3002<\/p>\n\n\n\n<h4>\u3000\u30009,PID<\/h4>\n\n\n\n<p>\u3000\u3000<code>pid: \"host\"<\/code><br>\u3000\u3000\u5c06PID\u6a21\u5f0f\u8bbe\u7f6e\u4e3a\u4e3b\u673aPID\u6a21\u5f0f\uff0c\u8ddf\u4e3b\u673a\u7cfb\u7edf\u5171\u4eab\u8fdb\u7a0b\u547d\u540d\u7a7a\u95f4\u3002\u5bb9\u5668\u4f7f\u7528pid\u6807\u7b7e\u5c06\u80fd\u591f\u8bbf\u95ee\u548c\u64cd\u7eb5\u5176\u4ed6\u5bb9\u5668\u548c\u5bbf\u4e3b\u673a\u7684\u540d\u79f0\u7a7a\u95f4\u3002<\/p>\n\n\n\n<h4>\u3000\u300010,ports<\/h4>\n\n\n\n<p>\u3000\u3000ports\u7528\u4e8e\u6620\u5c04\u7aef\u53e3\u7684\u6807\u7b7e\u3002<br>\u3000\u3000\u4f7f\u7528HOST:CONTAINER\u683c\u5f0f\u6216\u8005\u53ea\u662f\u6307\u5b9a\u5bb9\u5668\u7684\u7aef\u53e3\uff0c\u5bbf\u4e3b\u673a\u4f1a\u968f\u673a\u6620\u5c04\u7aef\u53e3\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>12345<\/td><td><code>ports:<\/code><code>-&nbsp;<\/code><code>\"3000\"<\/code><code>-&nbsp;<\/code><code>\"8000:8000\"<\/code><code>-&nbsp;<\/code><code>\"49100:22\"<\/code><code>-&nbsp;<\/code><code>\"127.0.0.1:8001:8001\"<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>&nbsp;\u3000\u3000\u5f53\u4f7f\u7528HOST:CONTAINER\u683c\u5f0f\u6765\u6620\u5c04\u7aef\u53e3\u65f6\uff0c\u5982\u679c\u4f7f\u7528\u7684\u5bb9\u5668\u7aef\u53e3\u5c0f\u4e8e60\u53ef\u80fd\u4f1a\u5f97\u5230\u9519\u8bef\u5f97\u7ed3\u679c\uff0c\u56e0\u4e3aYAML\u5c06\u4f1a\u89e3\u6790xx:yy\u8fd9\u79cd\u6570\u5b57\u683c\u5f0f\u4e3a60\u8fdb\u5236\u3002\u6240\u4ee5\u5efa\u8bae\u91c7\u7528\u5b57\u7b26\u4e32\u683c\u5f0f\u3002<\/p>\n\n\n\n<h4>\u3000\u300011,extra_hosts<\/h4>\n\n\n\n<p>\u3000\u3000\u6dfb\u52a0\u4e3b\u673a\u540d\u7684\u6807\u7b7e\uff0c\u4f1a\u5728\/etc\/hosts\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4e00\u4e9b\u8bb0\u5f55\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>123<\/td><td><code>extra_hosts:<\/code><code>-&nbsp;<\/code><code>\"somehost:162.242.195.82\"<\/code><code>-&nbsp;<\/code><code>\"otherhost:50.31.209.229\"<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>&nbsp;\u3000\u3000\u542f\u52a8\u540e\u67e5\u770b\u5bb9\u5668\u5185\u90e8hosts\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>12<\/td><td><code>162.242.195.82&nbsp; somehost<\/code><code>50.31.209.229&nbsp;&nbsp; otherhost<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4>&nbsp;\u3000\u300012,volumes<\/h4>\n\n\n\n<p>\u3000\u3000\u6302\u8f7d\u4e00\u4e2a\u76ee\u5f55\u6216\u8005\u4e00\u4e2a\u5df2\u5b58\u5728\u7684\u6570\u636e\u5377\u5bb9\u5668\uff0c\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528 [HOST:CONTAINER]\u683c\u5f0f\uff0c\u6216\u8005\u4f7f\u7528[HOST:CONTAINER:ro]\u683c\u5f0f\uff0c\u540e\u8005\u5bf9\u4e8e\u5bb9\u5668\u6765\u8bf4\uff0c\u6570\u636e\u5377\u662f\u53ea\u8bfb\u7684\uff0c\u53ef\u4ee5\u6709\u6548\u4fdd\u62a4\u5bbf\u4e3b\u673a\u7684\u6587\u4ef6\u7cfb\u7edf\u3002<br>Compose\u7684\u6570\u636e\u5377\u6307\u5b9a\u8def\u5f84\u53ef\u4ee5\u662f\u76f8\u5bf9\u8def\u5f84\uff0c\u4f7f\u7528 . \u6216\u8005 .. \u6765\u6307\u5b9a\u76f8\u5bf9\u76ee\u5f55\u3002<br>\u6570\u636e\u5377\u7684\u683c\u5f0f\u53ef\u4ee5\u662f\u4e0b\u9762\u591a\u79cd\u5f62\u5f0f<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1234567891011<\/td><td><code>volumes:<\/code><code>\/\/<\/code>&nbsp;<code>\u53ea\u662f\u6307\u5b9a\u4e00\u4e2a\u8def\u5f84\uff0cDocker \u4f1a\u81ea\u52a8\u5728\u521b\u5efa\u4e00\u4e2a\u6570\u636e\u5377\uff08\u8fd9\u4e2a\u8def\u5f84\u662f\u5bb9\u5668\u5185\u90e8\u7684\uff09\u3002<\/code><code>-&nbsp;<\/code><code>\/var\/lib\/mysql<\/code><code>\/\/<\/code>&nbsp;<code>\u4f7f\u7528\u7edd\u5bf9\u8def\u5f84\u6302\u8f7d\u6570\u636e\u5377<\/code><code>-&nbsp;<\/code><code>\/opt\/data<\/code><code>:<\/code><code>\/var\/lib\/mysql<\/code><code>\/\/<\/code>&nbsp;<code>\u4ee5 Compose \u914d\u7f6e\u6587\u4ef6\u4e3a\u4e2d\u5fc3\u7684\u76f8\u5bf9\u8def\u5f84\u4f5c\u4e3a\u6570\u636e\u5377\u6302\u8f7d\u5230\u5bb9\u5668\u3002<\/code><code>- .<\/code><code>\/cache<\/code><code>:<\/code><code>\/tmp\/cache<\/code><code>\/\/<\/code>&nbsp;<code>\u4f7f\u7528\u7528\u6237\u7684\u76f8\u5bf9\u8def\u5f84\uff08~\/ \u8868\u793a\u7684\u76ee\u5f55\u662f&nbsp;<\/code><code>\/home\/<\/code><code>&lt;\u7528\u6237\u76ee\u5f55&gt;\/ \u6216\u8005&nbsp;<\/code><code>\/root\/<\/code><code>\uff09\u3002<\/code><code>- ~<\/code><code>\/configs<\/code><code>:<\/code><code>\/etc\/configs\/<\/code><code>:ro<\/code><code>\/\/<\/code>&nbsp;<code>\u5df2\u7ecf\u5b58\u5728\u7684\u547d\u540d\u7684\u6570\u636e\u5377\u3002<\/code><code>- datavolume:<\/code><code>\/var\/lib\/mysql<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>&nbsp;\u3000\u3000\u5982\u679c\u4e0d\u4f7f\u7528\u5bbf\u4e3b\u673a\u7684\u8def\u5f84\uff0c\u53ef\u4ee5\u6307\u5b9a\u4e00\u4e2avolume_driver\u3002<br><code>\u3000\u3000volume_driver: mydriver<\/code><\/p>\n\n\n\n<h4>\u3000\u300013,volumes_from<\/h4>\n\n\n\n<p>\u3000\u3000\u4ece\u53e6\u4e00\u4e2a\u670d\u52a1\u6216\u5bb9\u5668\u6302\u8f7d\u5176\u6570\u636e\u5377\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>123<\/td><td><code>volumes_from:<\/code><code>- service_name&nbsp;&nbsp;&nbsp;<\/code><code>- container_name<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4>&nbsp;\u3000\u300014,dns<\/h4>\n\n\n\n<p>\u3000\u3000\u81ea\u5b9a\u4e49DNS\u670d\u52a1\u5668\u3002\u53ef\u4ee5\u662f\u4e00\u4e2a\u503c\uff0c\u4e5f\u53ef\u4ee5\u662f\u4e00\u4e2a\u5217\u8868\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1234<\/td><td><code>dns\uff1a8.8.8.8<\/code><code>dns\uff1a<\/code><code>- 8.8.8.8&nbsp;&nbsp;&nbsp;<\/code><code>- 9.9.9.9<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4>&nbsp;\u3000\u300015,expose<\/h4>\n\n\n\n<p>\u3000\u3000\u66b4\u9732\u7aef\u53e3\uff0c\u4f46\u4e0d\u6620\u5c04\u5230\u5bbf\u4e3b\u673a\uff0c\u53ea\u5141\u8bb8\u80fd\u88ab\u8fde\u63a5\u7684\u670d\u52a1\u8bbf\u95ee\u3002\u4ec5\u53ef\u4ee5\u6307\u5b9a\u5185\u90e8\u7aef\u53e3\u4e3a\u53c2\u6570\uff0c\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>123<\/td><td><code>expose:<\/code><code>-&nbsp;<\/code><code>\"3000\"<\/code><code>-&nbsp;<\/code><code>\"8000\"<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4>&nbsp;\u3000\u300016,links<\/h4>\n\n\n\n<p>\u3000\u3000\u94fe\u63a5\u5230\u5176\u5b83\u670d\u52a1\u4e2d\u7684\u5bb9\u5668\u3002\u4f7f\u7528\u670d\u52a1\u540d\u79f0\uff08\u540c\u65f6\u4f5c\u4e3a\u522b\u540d\uff09\uff0c\u6216\u8005\u201c\u670d\u52a1\u540d\u79f0:\u670d\u52a1\u522b\u540d\u201d\uff08\u5982 SERVICE:ALIAS\uff09\uff0c\u4f8b\u5982\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1234<\/td><td><code>links:<\/code><code>- db<\/code><code>- db:database<\/code><code>- redis<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4>&nbsp;\u3000\u300017,net<\/h4>\n\n\n\n<p>\u3000\u3000\u8bbe\u7f6e\u7f51\u7edc\u6a21\u5f0f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>123<\/td><td><code>net:&nbsp;<\/code><code>\"bridge\"<\/code><code>net:&nbsp;<\/code><code>\"none\"<\/code><code>net:&nbsp;<\/code><code>\"host\"<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>example<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '2'\nservices:\n  web1:\n    image: nginx\n    ports:\n      - \"6061:80\"\n    container_name: \"web1\"\n    networks:\n      - dev\n  web2:\n    image: nginx\n    ports:\n      - \"6062:80\"\n    container_name: \"web2\"\n    networks:\n      - dev\n      - pro\n  web3:\n    image: nginx\n    ports:\n      - \"6063:80\"\n    container_name: \"web3\"\n    networks:\n      - pro\n \nnetworks:\n  dev:\n    driver: bridge\n  pro:\n    driver: bridge<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>docker-compose.yml \u7528\u6765\u7f16\u5199docker\u5bb9\u5668\u5bf9\u8c61\u7684\u914d\u7f6e 2\uff0cimage \u3000\u3000image\u662f\u6307\u5b9a\u670d\u52a1\u7684\u955c\u50cf\u540d\u79f0\u6216\u955c\u50cfID\u3002\u5982\u679c\u955c\u50cf\u5728\u672c\u5730\u4e0d\u5b58\u5728\uff0cCompose\u5c06\u4f1a\u5c1d\u8bd5\u62c9\u53d6\u955c\u50cf\u3002 123 services:web:image: hello-world &nbsp;\u3000\u30003\uff0cbuild \u3000\u3000\u670d\u52a1\u9664\u4e86\u53ef\u4ee5\u57fa\u4e8e\u6307\u5b9a\u7684\u955c\u50cf\uff0c\u8fd8\u53ef\u4ee5\u57fa\u4e8e\u4e00\u4efdDockerfile\uff0c\u5728\u4f7f\u7528up\u542f\u52a8\u65f6\u6267\u884c\u6784\u5efa\u4efb\u52a1\uff0c\u6784\u5efa\u6807\u7b7e\u662fbuild\uff0c\u53ef\u4ee5\u6307\u5b9aDockerfile\u6240\u5728\u6587\u4ef6\u5939\u7684\u8def\u5f84\u3002Compose\u5c06\u4f1a\u5229\u7528Dockerfile\u81ea\u52a8\u6784\u5efa\u955c\u50cf\uff0c\u7136\u540e\u4f7f\u7528\u955c\u50cf\u542f\u52a8\u670d\u52a1\u5bb9\u5668\u3002 1 build:&nbsp;\/path\/to\/build\/dir &nbsp;\u3000\u3000\u4e5f\u53ef\u4ee5\u662f\u76f8\u5bf9\u8def\u5f84\uff0c\u53ea\u8981\u4e0a\u4e0b\u6587\u786e\u5b9a\u5c31\u53ef\u4ee5\u8bfb\u53d6\u5230Dockerfile\u3002 1 build: .\/dir &nbsp;\u3000\u3000\u8bbe\u5b9a\u4e0a\u4e0b\u6587\u6839\u76ee\u5f55\uff0c\u7136\u540e\u4ee5\u8be5\u76ee\u5f55\u4e3a\u51c6\u6307\u5b9aDockerfile\u3002 123 build:context: ..\/dockerfile: path\/of\/Dockerfile &nbsp;\u3000\u3000build\u90fd\u662f\u4e00\u4e2a\u76ee\u5f55\uff0c\u5982\u679c\u8981\u6307\u5b9aDockerfile\u6587\u4ef6\u9700\u8981\u5728build\u6807\u7b7e\u7684\u5b50\u7ea7\u6807\u7b7e\u4e2d\u4f7f\u7528dockerfile\u6807\u7b7e\u6307\u5b9a\u3002\u5982\u679c\u540c\u65f6\u6307\u5b9aimage\u548cbuild\u4e24\u4e2a\u6807\u7b7e\uff0c\u90a3\u4e48Compose\u4f1a\u6784\u5efa\u955c\u50cf\u5e76\u4e14\u628a\u955c\u50cf\u547d\u540d\u4e3aimage\u503c\u6307\u5b9a\u7684\u540d\u5b57\u3002 \u3000\u30004,context \u3000\u3000context\u9009\u9879\u53ef\u4ee5\u662fDockerfile\u7684\u6587\u4ef6\u8def\u5f84\uff0c\u4e5f\u53ef\u4ee5\u662f\u5230\u94fe\u63a5\u5230git\u4ed3\u5e93\u7684url\uff0c\u5f53\u63d0\u4f9b\u7684\u503c\u662f\u76f8\u5bf9\u8def\u5f84\u65f6\uff0c\u88ab\u89e3\u6790\u4e3a\u76f8\u5bf9\u4e8e\u64b0\u5199\u6587\u4ef6\u7684\u8def\u5f84\uff0c\u6b64\u76ee\u5f55\u4e5f\u662f\u53d1\u9001\u5230Docker\u5b88\u62a4\u8fdb\u7a0b\u7684context 12 build:context: .\/dir &nbsp;\u3000\u30005,dockerfile \u3000\u3000\u4f7f\u7528dockerfile\u6587\u4ef6\u6765\u6784\u5efa\uff0c\u5fc5\u987b\u6307\u5b9a\u6784\u5efa\u8def\u5f84 123 build:context: .dockerfile: Dockerfile-alternate &nbsp;\u3000\u30006,commond \u3000\u3000\u4f7f\u7528command\u53ef\u4ee5\u8986\u76d6\u5bb9\u5668\u542f\u52a8\u540e\u9ed8\u8ba4\u6267\u884c\u7684\u547d\u4ee4\u3002 1 command: bundle&nbsp;exec&nbsp;thin -p 3000 &nbsp;\u3000\u30007,container_name \u3000\u3000Compose\u7684\u5bb9\u5668\u540d\u79f0\u683c\u5f0f\u662f\uff1a&lt;\u9879\u76ee\u540d\u79f0&gt;&lt;\u670d\u52a1\u540d\u79f0&gt;&lt;\u5e8f\u53f7&gt;\u53ef\u4ee5\u81ea\u5b9a\u4e49\u9879\u76ee\u540d\u79f0\u3001\u670d\u52a1\u540d\u79f0\uff0c\u4f46\u5982\u679c\u60f3\u5b8c\u5168\u63a7\u5236\u5bb9\u5668\u7684\u547d\u540d\uff0c\u53ef\u4ee5\u4f7f\u7528\u6807\u7b7e\u6307\u5b9a\uff1a 1 container_name: app &nbsp;\u3000\u30008,depends_on \u5728\u4f7f\u7528Compose\u65f6\uff0c\u6700\u5927\u7684\u597d\u5904\u5c31\u662f\u5c11\u6253\u542f\u52a8\u547d\u4ee4\uff0c\u4f46\u4e00\u822c\u9879\u76ee\u5bb9\u5668\u542f\u52a8\u7684\u987a\u5e8f\u662f\u6709\u8981\u6c42\u7684\uff0c\u5982\u679c\u76f4\u63a5\u4ece\u4e0a\u5230\u4e0b\u542f\u52a8\u5bb9\u5668\uff0c\u5fc5\u7136\u4f1a\u56e0\u4e3a\u5bb9\u5668\u4f9d\u8d56\u95ee\u9898\u800c\u542f\u52a8\u5931\u8d25\u3002\u4f8b\u5982\u5728\u6ca1\u542f\u52a8\u6570\u636e\u5e93\u5bb9\u5668\u7684\u65f6\u5019\u542f\u52a8\u5e94\u7528\u5bb9\u5668\uff0c\u5e94\u7528\u5bb9\u5668\u4f1a\u56e0\u4e3a\u627e\u4e0d\u5230\u6570\u636e\u5e93\u800c\u9000\u51fa\u3002depends_on\u6807\u7b7e\u7528\u4e8e\u89e3\u51b3\u5bb9\u5668\u7684\u4f9d\u8d56\u3001\u542f\u52a8\u5148\u540e\u7684\u95ee\u9898 1234567891011 version:&nbsp;&#8216;2&#8217;services:web:build: .depends_on:- db- redisredis:image: redisdb:image: postgres &nbsp;\u3000\u3000\u4e0a\u8ff0YAML\u6587\u4ef6\u5b9a\u4e49\u7684\u5bb9\u5668\u4f1a\u5148\u542f\u52a8redis\u548cdb\u4e24\u4e2a\u670d\u52a1\uff0c\u6700\u540e\u624d\u542f\u52a8web \u670d\u52a1\u3002 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[60],"tags":[102],"_links":{"self":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts\/607"}],"collection":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=607"}],"version-history":[{"count":1,"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts\/607\/revisions"}],"predecessor-version":[{"id":608,"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts\/607\/revisions\/608"}],"wp:attachment":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=607"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}