{"id":1545,"date":"2020-06-11T13:45:13","date_gmt":"2020-06-11T05:45:13","guid":{"rendered":"http:\/\/blog.ywdevops.cn\/?p=1545"},"modified":"2026-09-07T09:37:00","modified_gmt":"2026-09-07T01:37:00","slug":"compose","status":"publish","type":"post","link":"https:\/\/blog.ywdevops.cn\/index.php\/2020\/06\/11\/compose\/","title":{"rendered":"docker\u4e09\u5251\u5ba2\u4e4bdocker-compose"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Docker Compose\u662f Docker \u5b98\u65b9\u7f16\u6392\uff08Orchestration\uff09\u9879\u76ee\u4e4b\u4e00\uff0c\u8d1f\u8d23\u5feb\u901f\u5728\u96c6\u7fa4\u4e2d\u90e8\u7f72\u5206\u5e03\u5f0f\u5e94\u7528\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compose\u9879\u76ee\u662f Docker \u5b98\u65b9\u7684\u5f00\u6e90\u9879\u76ee\uff0c\u8d1f\u8d23\u5b9e\u73b0\u5bf9 Docker \u5bb9\u5668\u96c6\u7fa4\u7684\u5feb\u901f\u7f16\u6392\u3002\u4ece\u529f\u80fd\u4e0a\u770b\uff0c\u8ddfOpenStack\u4e2d\u7684Heat\u5341\u5206\u7c7b\u4f3c\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compose\u5b9a\u4f4d\u662f\u300c\u5b9a\u4e49\u548c\u8fd0\u884c\u591a\u4e2a Docker \u5bb9\u5668\u7684\u5e94\u7528\uff08Defining and running multi-container Docker applications\uff09\u300d\uff0c\u5176\u524d\u8eab\u662f\u5f00\u6e90\u9879\u76ee Fig\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7528\u4e00\u4e2aDockerfile\u6a21\u677f\u6587\u4ef6\uff0c\u53ef\u4ee5\u8ba9\u7528\u6237\u5f88\u65b9\u4fbf\u7684\u5b9a\u4e49\u4e00\u4e2a\u5355\u72ec\u7684\u5e94\u7528\u5bb9\u5668\u3002\u7136\u800c\uff0c\u5728\u65e5\u5e38\u5de5\u4f5c\u4e2d\uff0c\u7ecf\u5e38\u4f1a\u78b0\u5230\u9700\u8981\u591a\u4e2a\u5bb9\u5668\u76f8\u4e92\u914d\u5408\u6765\u5b8c\u6210\u67d0\u9879\u4efb\u52a1\u7684\u60c5\u51b5\u3002\u4f8b\u5982\u8981\u5b9e\u73b0\u4e00\u4e2a Web \u9879\u76ee\uff0c\u9664\u4e86 Web \u670d\u52a1\u5bb9\u5668\u672c\u8eab\uff0c\u5f80\u5f80\u8fd8\u9700\u8981\u518d\u52a0\u4e0a\u540e\u7aef\u7684\u6570\u636e\u5e93\u670d\u52a1\u5bb9\u5668\uff0c\u751a\u81f3\u8fd8\u5305\u62ec\u8d1f\u8f7d\u5747\u8861\u5bb9\u5668\u7b49\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">compose\u6070\u597d\u53ef\u4ee5\u6ee1\u8db3\u8fd9\u6837\u7684\u9700\u6c42\uff0c\u5b83\u5141\u8bb8\u7528\u6237\u901a\u8fc7\u4e00\u4e2a\u5355\u72ec\u7684docker-compose.yml\u6587\u4ef6\u6765\u5b9a\u4e49\u4e00\u7ec4\u76f8\u5173\u8054\u7684\u5e94\u7528\u5bb9\u5668\u4e3a\u4e00\u4e2a\u9879\u76ee <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compose\u4e2d\u6709\u4e24\u4e2a\u91cd\u8981\u7684\u6982\u5ff5\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li> \u670d\u52a1(service)\uff1a\u4e00\u4e2a\u5e94\u7528\u7684\u5bb9\u5668\uff0c\u5b9e\u9645\u4e0a\u53ef\u4ee5\u5305\u62ec\u82e5\u5e72\u8fd0\u884c\u76f8\u540c\u955c\u50cf\u7684\u5bb9\u5668\u5b9e\u4f8b\u3002 <\/li>\n\n\n\n<li> \u9879\u76ee (project)\uff1a\u7531\u4e00\u7ec4\u5173\u8054\u7684\u5e94\u7528\u5bb9\u5668\u7ec4\u6210\u7684\u4e00\u4e2a\u5b8c\u6574\u4e1a\u52a1\u5355\u5143\uff0c\u5728docker-compose.yml\u6587\u4ef6\u4e2d\u5b9a\u4e49 <\/li>\n<\/ol>\n\n\n\n<p class=\"has-very-dark-gray-color has-luminous-vivid-amber-background-color has-text-color has-background wp-block-paragraph\"> Compose\u7684\u9ed8\u8ba4\u7ba1\u7406\u5bf9\u8c61\u662f\u9879\u76ee\uff0c\u901a\u8fc7\u5b50\u547d\u4ee4\u5bf9\u9879\u76ee\u4e2d\u7684\u4e00\u7ec4\u5bb9\u5668\u8fdb\u884c\u4fbf\u6377\u5730\u751f\u547d\u5468\u671f\u7ba1\u7406\u3002Compose\u9879\u76ee\u7531 Python \u7f16\u5199\uff0c\u5b9e\u73b0\u4e0a\u8c03\u7528\u4e86 Docker \u670d\u52a1\u63d0\u4f9b\u7684 API \u6765\u5bf9\u5bb9\u5668\u8fdb\u884c\u7ba1\u7406\u3002\u56e0\u6b64\uff0c\u53ea\u8981\u6240\u64cd\u4f5c\u7684\u5e73\u53f0\u652f\u6301 Docker API\uff0c\u5c31\u53ef\u4ee5\u5728\u5176\u4e0a\u5229\u7528Compose\u6765\u8fdb\u884c\u7f16\u6392\u7ba1\u7406\u3002<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">compose\u5b89\u88c5\u4e0e\u5378\u8f7d<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compose \u652f\u6301 Linux\u3001macOS\u3001Windows 10 \u4e09\u5927\u5e73\u53f0\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compose \u53ef\u4ee5\u901a\u8fc7 Python \u7684\u5305\u7ba1\u7406\u5de5\u5177 pip \u8fdb\u884c\u5b89\u88c5\uff0c\u4e5f\u53ef\u4ee5\u76f4\u63a5\u4e0b\u8f7d\u7f16\u8bd1\u597d\u7684\u4e8c\u8fdb\u5236\u6587 \u4ef6\u4f7f\u7528\uff0c\u751a\u81f3\u80fd\u591f\u76f4\u63a5\u5728 Docker \u5bb9\u5668\u4e2d\u8fd0\u884c\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528yum\u5b89\u88c5<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u524d\u4e24\u79cd\u65b9\u5f0f\u662f\u4f20\u7edf\u65b9\u5f0f\uff0c\u9002\u5408\u672c\u5730\u73af\u5883\u4e0b\u5b89\u88c5\u4f7f\u7528\uff1b\u6700\u540e\u4e00\u79cd\u65b9\u5f0f\u5219\u4e0d\u7834\u574f\u7cfb\u7edf\u73af\u5883\uff0c\u66f4\u9002\u5408\u4e91\u8ba1\u7b97\u573a\u666f\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker for Mac \u3001 Docker for Windows \u81ea\u5e26 docker-compose \u4e8c\u8fdb\u5236\u6587\u4ef6\uff0c\u5b89\u88c5 Docker \u4e4b \u540e\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Linux\u7cfb\u7edf\u5b89\u88c5compose\uff1a<\/mark><\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u76f4\u63a5\u4e0b\u8f7d\u7f16\u8f91\u597d\u7684\u4e8c\u8fdb\u5236\u5b89\u88c5\u5305\uff0c\u7136\u540e\u4f7f\u7528\u5373\u53ef\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a<a href=\"https:\/\/github.com\/docker\/compose\/releases\">https:\/\/github.com\/docker\/compose\/releases<\/a>  \u4e0b\u5b8c\u540e\u7ed9\u6587\u4ef6\u6267\u884c\u6743\u9650\uff0cchmod +x docker-compose<\/li>\n\n\n\n<li>\u901a\u8fc7pip\u7684\u65b9\u5f0f\u5b89\u88c5\uff0c\u6b64\u65f6\u9700\u8981\u5b89\u88c5Python(Linux\u7cfb\u7edf\u81ea\u5e26python)\uff0c\u4f7f\u7528\u547d\u4ee4\uff1a pip install -U docker-compose <\/li>\n\n\n\n<li>\u76f4\u63a5\u901a\u8fc7yum\u5b89\u88c5\uff0c\u6267\u884c\u547d\u4ee4yum -y install docker-compose\u5373\u53ef<\/li>\n\n\n\n<li><\/li>\n\n\n\n<li><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u5378\u8f7d\uff1a<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u662f\u4e8c\u8fdb\u5236\u5305\u65b9\u5f0f\u5b89\u88c5\u7684\uff0c\u5220\u9664\u4e8c\u8fdb\u5236\u6587\u4ef6\u5373\u53ef\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> rm \/usr\/local\/bin\/docker-compose <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"> \u5982\u679c\u662f\u901a\u8fc7 pip \u5b89\u88c5\u7684\uff0c\u5219\u6267\u884c\u5982\u4e0b\u547d\u4ee4\u5373\u53ef\u5220\u9664\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip uninstall docker-compose<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u662f\u901a\u8fc7yum\u5b89\u88c5\uff0c\u90a3\u4e48\u8fd8\u662f\u901a\u8fc7yum\u5378\u8f7d\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yum remove docker-compose<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">docker-compose\u4e0eDockerfile\u533a\u522b\uff1aDockerfile\u4e3b\u8981\u7528\u6765\u6784\u5efa\u955c\u50cf\uff0cdocker-compose\u521b\u5efa\u4ee5\u53ca\u7ba1\u7406\u5bb9\u5668\u3002<\/p>\n\n\n\n<p class=\"has-text-align-center has-medium-font-size wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">compose \u547d\u4ee4\u8bf4\u660e<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u4e8e compose \u6765\u8bf4\uff0c\u5927\u90e8\u5206\u547d\u4ee4\u7684\u5bf9\u8c61\u65e2\u53ef\u4ee5\u662f\u9879\u76ee\u672c\u8eab\uff0c\u4e5f\u53ef\u4ee5\u6307\u5b9a\u4e3a\u9879\u76ee\u4e2d\u7684\u670d\u52a1\u6216\u8005\u5bb9\u5668\u3002\u5982\u679c\u6ca1\u6709\u7279\u522b\u7684\u8bf4\u660e\uff0c\u547d\u4ee4\u5bf9\u8c61\u5c06\u662f\u9879\u76ee\uff0c\u8fd9\u610f\u5473\u7740\u9879\u76ee\u4e2d\u6240\u6709\u7684\u670d\u52a1\u90fd\u4f1a\u53d7\u5230\u547d\u4ee4\u5f71\u54cd\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6267\u884c\u547d\u4ee4\uff1a<strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">docker-compose command &#8211;help<\/mark><\/strong>  \u53ef\u4ee5\u67e5\u770b\u5168\u90e8\u547d\u4ee4\u683c\u5f0f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">build:<\/mark> <\/strong> <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose build &#91;options] &#91;SERVICE...] <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6784\u5efa\uff08\u91cd\u65b0\u6784\u5efa\uff09\u9879\u76ee\u4e2d\u7684\u670d\u52a1\u5bb9\u5668\u3002 \u670d\u52a1\u5bb9\u5668\u4e00\u65e6\u6784\u5efa\u540e\uff0c\u5c06\u4f1a\u5e26\u4e0a\u4e00\u4e2a\u6807\u8bb0\u540d\uff0c\u4f8b\u5982\u5bf9\u4e8e web \u9879\u76ee\u4e2d\u7684\u4e00\u4e2a db \u5bb9\u5668\uff0c\u53ef\u80fd\u662f web_db\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u4ee5\u968f\u65f6\u5728\u9879\u76ee\u76ee\u5f55\u4e0b\u8fd0\u884c docker-compose build \u6765\u91cd\u65b0\u6784\u5efa\u670d\u52a1\u3002 \u9009\u9879\u5305\u62ec\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&#8211;force-rm \u5220\u9664\u6784\u5efa\u8fc7\u7a0b\u4e2d\u7684\u4e34\u65f6\u5bb9\u5668<\/li>\n\n\n\n<li>&#8211;no-cache \u6784\u5efa\u955c\u50cf\u8fc7\u7a0b\u4e2d\u4e0d\u4f7f\u7528 cache\uff08\u8fd9\u5c06\u52a0\u957f\u6784\u5efa\u8fc7\u7a0b\uff09<\/li>\n\n\n\n<li>&#8211;pull \u59cb\u7ec8\u5c1d\u8bd5\u901a\u8fc7 pull \u6765\u83b7\u53d6\u66f4\u65b0\u7248\u672c\u7684\u955c\u50cf<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><strong>config: <\/strong> <\/mark>\u9a8c\u8bc1 compose \u6587\u4ef6\u683c\u5f0f\u662f\u5426\u6b63\u786e\uff0c\u82e5\u6b63\u786e\u5219\u663e\u793a\u914d\u7f6e\uff0c\u82e5\u683c\u5f0f\u9519\u8bef\u663e\u793a\u9519\u8bef\u539f\u56e0\u3002 <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose config     #\u5728docker-compose.yml\u76ee\u5f55\u4f4d\u7f6e\u6267\u884c\u5373\u53ef<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">down :<\/mark><\/strong>  \u6b64\u547d\u4ee4\u5c06\u4f1a\u505c\u6b62 up \u547d\u4ee4\u6240\u542f\u52a8\u7684\u5bb9\u5668\uff0c\u5e76\u79fb\u9664\u7f51\u7edc <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose down     #\u505c\u6b62\u5e76\u5220\u9664\u5bb9\u5668<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong> <\/strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><strong>exec :<\/strong> <\/mark>   \u8fdb\u5165\u6307\u5b9a\u7684\u5bb9\u5668\uff0c\u6ce8\u610f\uff0cexec\u540e\u9762\u662f\u670d\u52a1\u540d\uff0c\u5c31\u662fdocker-compose.yml\u6587\u4ef6\u91cc\u5199\u7684\u540d\u5b57<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose exec \u670d\u52a1\u540d bash  #\u5982\u679c\u6ca1\u6709bash\u5c31\u7528sh <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong> <\/strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><strong>help :<\/strong> <\/mark>     \u83b7\u5f97\u4e00\u4e2a\u547d\u4ee4\u7684\u5e2e\u52a9\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"> images : <\/mark> <\/strong>  \u5217\u51fa compose \u6587\u4ef6\u4e2d\u5305\u542b\u7684\u955c\u50cf\uff0c\u53ef\u4ee5\u770b\u5230docker-compose.yml\u4e2d\u4f7f\u7528\u7684\u5168\u90e8\u955c\u50cf<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose images  <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"> <strong>kill :<\/strong>  <\/mark> \u901a\u8fc7\u53d1\u9001 SIGKILL \u4fe1\u53f7\u6765\u5f3a\u5236\u505c\u6b62\u670d\u52a1\u5bb9\u5668\u3002  \u652f\u6301\u901a\u8fc7 -s \u53c2\u6570\u6765\u6307\u5b9a\u53d1\u9001\u7684\u4fe1\u53f7\uff0c\u4f8b\u5982\u901a\u8fc7\u5982\u4e0b\u6307\u4ee4\u53d1\u9001 SIGINT \u4fe1\u53f7\u3002 \u4f8b\u5982\uff1adocker-compose kill -s SIGINT <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"> logs \uff1a<\/mark><\/strong> \u683c\u5f0f\u4e3a docker-compose logs [options] [SERVICE&#8230;] <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u670d\u52a1\u5bb9\u5668\u7684\u8f93\u51fa\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cdocker-compose \u5c06\u5bf9\u4e0d\u540c\u7684\u670d\u52a1\u8f93\u51fa\u4f7f\u7528\u4e0d\u540c\u7684\u989c\u8272\u6765 \u533a\u5206\u3002\u53ef\u4ee5\u901a\u8fc7 &#8211;no-color \u6765\u5173\u95ed\u989c\u8272\u3002  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">pause \uff1a<\/mark><\/strong> \u683c\u5f0f\u4e3a docker-compose pause [SERVICE&#8230;] \u6682\u505c\u4e00\u4e2a\u670d\u52a1\u5bb9\u5668 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">port \uff1a<\/mark><\/strong> \u683c\u5f0f\u4e3a docker-compose port [options] SERVICE PRIVATE_PORT  \u6253\u5370\u67d0\u4e2a\u5bb9\u5668\u7aef\u53e3\u6240\u6620\u5c04\u7684\u516c\u5171\u7aef\u53e3 \uff0c\u9009\u9879\uff1a <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&#8211;protocol=proto \u6307\u5b9a\u7aef\u53e3\u534f\u8bae\uff0ctcp\uff08\u9ed8\u8ba4\u503c\uff09\u6216\u8005 udp <\/li>\n\n\n\n<li>&#8211;index=index \u5982\u679c\u540c\u4e00\u670d\u52a1\u5b58\u5728\u591a\u4e2a\u5bb9\u5668\uff0c\u6307\u5b9a\u547d\u4ee4\u5bf9\u8c61\u5bb9\u5668\u7684\u5e8f\u53f7\uff08\u9ed8\u8ba4\u4e3a 1\uff09<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"> <strong>ps :<\/strong>  <\/mark> \u683c\u5f0f\u4e3a docker-compose ps [options] [SERVICE&#8230;] \uff0c \u5217\u51fa\u9879\u76ee\u4e2d\u76ee\u524d\u7684\u6240\u6709\u5bb9\u5668\uff0c\u9009\u9879\uff1a  -q \u53ea\u6253\u5370\u5bb9\u5668\u7684 ID \u4fe1\u606f <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">pull \uff1a<\/mark><\/strong> \u683c\u5f0f\u4e3a docker-compose pull [options] [SERVICE&#8230;] \u62c9\u53d6\u670d\u52a1\u4f9d\u8d56\u7684\u955c\u50cf \uff0c\u9009\u9879\uff1a  &#8211;ignore-pull-failures \u5ffd\u7565\u62c9\u53d6\u955c\u50cf\u8fc7\u7a0b\u4e2d\u7684\u9519\u8bef <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"> <strong>push \uff1a<\/strong><\/mark> \u63a8\u9001\u670d\u52a1\u4f9d\u8d56\u7684\u955c\u50cf\u5230 Docker \u955c\u50cf\u4ed3\u5e93\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"> restart \uff1a<\/mark><\/strong> \u683c\u5f0f\u4e3a docker-compose restart [options] [SERVICE&#8230;] \uff0c\u91cd\u542f\u9879\u76ee\u4e2d\u7684\u670d\u52a1\uff0c\u9009\u9879\uff1a <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> -t, &#8211;timeout TIMEOUT \u6307\u5b9a\u91cd\u542f\u524d\u505c\u6b62\u5bb9\u5668\u7684\u8d85\u65f6\uff08\u9ed8\u8ba4\u4e3a 10 \u79d2\uff09\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong> <\/strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><strong> rm \uff1a<\/strong> <\/mark>\u683c\u5f0f\u4e3a docker-compose rm [options] [SERVICE&#8230;] \u5220\u9664\u6240\u6709\uff08\u505c\u6b62\u72b6\u6001\u7684\uff09\u670d\u52a1\u5bb9\u5668\u3002\u63a8\u8350\u5148\u6267\u884c docker-compose stop \u547d\u4ee4\u6765\u505c\u6b62\u5bb9\u5668\u3002\u9009\u9879\uff1a <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li> -f, &#8211;force \u5f3a\u5236\u76f4\u63a5\u5220\u9664\uff0c\u5305\u62ec\u975e\u505c\u6b62\u72b6\u6001\u7684\u5bb9\u5668\u3002\u4e00\u822c\u5c3d\u91cf\u4e0d\u8981\u4f7f\u7528\u8be5\u9009\u9879\u3002 <\/li>\n\n\n\n<li> -v \u5220\u9664\u5bb9\u5668\u6240\u6302\u8f7d\u7684\u6570\u636e\u5377\u3002 <\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">run \uff1a<\/mark><\/strong>\u683c\u5f0f\u4e3a docker-compose run [options] [-p PORT&#8230;] [-e KEY=VAL&#8230;] SERVICE [COMMAND] [ARGS&#8230;] \u4f8b\u5982\uff1a\u5728\u6307\u5b9a\u670d\u52a1\u4e0a\u6267\u884c\u4e00\u4e2a\u547d\u4ee4 : docker-compose run ubuntu ping docker.com <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u8ff0\u547d\u4ee4\u5c06\u4f1a\u542f\u52a8\u4e00\u4e2a ubuntu \u670d\u52a1\u5bb9\u5668\uff0c\u5e76\u6267\u884c ping docker.com \u547d\u4ee4\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u5982\u679c\u5b58\u5728\u5173\u8054\uff0c\u5219\u6240\u6709\u5173\u8054\u7684\u670d\u52a1\u5c06\u4f1a\u81ea\u52a8\u88ab\u542f\u52a8\uff0c\u9664\u975e\u8fd9\u4e9b\u670d\u52a1\u5df2\u7ecf\u5728\u8fd0\u884c\u4e2d\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8be5\u547d\u4ee4\u7c7b\u4f3c\u542f\u52a8\u5bb9\u5668\u540e\u8fd0\u884c\u6307\u5b9a\u7684\u547d\u4ee4\uff0c\u76f8\u5173\u5377\u3001\u94fe\u63a5\u7b49\u7b49\u90fd\u5c06\u4f1a\u6309\u7167\u914d\u7f6e\u81ea\u52a8\u521b\u5efa\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e24\u4e2a\u4e0d\u540c\u70b9\uff1a <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>  \u7ed9\u5b9a\u547d\u4ee4\u5c06\u4f1a\u8986\u76d6\u539f\u6709\u7684\u81ea\u52a8\u8fd0\u884c\u547d\u4ee4\uff1b <\/li>\n\n\n\n<li> \u4e0d\u4f1a\u81ea\u52a8\u521b\u5efa\u7aef\u53e3\uff0c\u4ee5\u907f\u514d\u51b2\u7a81\u3002 <\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u4e0d\u5e0c\u671b\u81ea\u52a8\u542f\u52a8\u5173\u8054\u7684\u5bb9\u5668\uff0c\u53ef\u4ee5\u4f7f\u7528 &#8211;no-deps \u9009\u9879\uff0c\u4f8b\u5982 :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">  docker-compose run &#8211;no-deps web python manage.py shell <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u9009\u9879\uff1a <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li> -d \u540e\u53f0\u8fd0\u884c\u5bb9\u5668\u3002 <\/li>\n\n\n\n<li> &#8211;name NAME \u4e3a\u5bb9\u5668\u6307\u5b9a\u4e00\u4e2a\u540d\u5b57\u3002 <\/li>\n\n\n\n<li> &#8211;entrypoint CMD \u8986\u76d6\u9ed8\u8ba4\u7684\u5bb9\u5668\u542f\u52a8\u6307\u4ee4\u3002 <\/li>\n\n\n\n<li> -e KEY=VAL \u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\u503c\uff0c\u53ef\u591a\u6b21\u4f7f\u7528\u9009\u9879\u6765\u8bbe\u7f6e\u591a\u4e2a\u73af\u5883\u53d8\u91cf <\/li>\n\n\n\n<li> -u, &#8211;user=&#8221;&#8221; \u6307\u5b9a\u8fd0\u884c\u5bb9\u5668\u7684\u7528\u6237\u540d\u6216\u8005 uid\u3002 <\/li>\n\n\n\n<li> &#8211;no-deps \u4e0d\u81ea\u52a8\u542f\u52a8\u5173\u8054\u7684\u670d\u52a1\u5bb9\u5668\u3002 <\/li>\n\n\n\n<li>  &#8211;rm \u8fd0\u884c\u547d\u4ee4\u540e\u81ea\u52a8\u5220\u9664\u5bb9\u5668\uff0c d \u6a21\u5f0f\u4e0b\u5c06\u5ffd\u7565\u3002 <\/li>\n\n\n\n<li> -p, &#8211;publish=[] \u6620\u5c04\u5bb9\u5668\u7aef\u53e3\u5230\u672c\u5730\u4e3b\u673a\u3002 <\/li>\n\n\n\n<li> &#8211;service-ports \u914d\u7f6e\u670d\u52a1\u7aef\u53e3\u5e76\u6620\u5c04\u5230\u672c\u5730\u4e3b\u673a\u3002 <\/li>\n\n\n\n<li> -T \u4e0d\u5206\u914d\u4f2a tty\uff0c\u610f\u5473\u7740\u4f9d\u8d56 tty \u7684\u6307\u4ee4\u5c06\u65e0\u6cd5\u8fd0\u884c\u3002 <\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><strong> scale :<\/strong>  <\/mark> \u683c\u5f0f\u4e3a docker-compose scale [options] [SERVICE=NUM&#8230;] <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u8bbe\u7f6e\u6307\u5b9a\u670d\u52a1\u8fd0\u884c\u7684\u5bb9\u5668\u4e2a\u6570 ,  \u901a\u8fc7 service=num \u7684\u53c2\u6570\u6765\u8bbe\u7f6e\u6570\u91cf\u3002\u4f8b\u5982\uff1a <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> docker-compose scale web=3 db=2 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u8ff0\u547d\u4ee4\u5c06\u542f\u52a8 3 \u4e2a\u5bb9\u5668\u8fd0\u884c web \u670d\u52a1\uff0c2 \u4e2a\u5bb9\u5668\u8fd0\u884c db \u670d\u52a1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u822c\u7684\uff0c\u5f53\u6307\u5b9a\u6570\u76ee\u591a\u4e8e\u8be5\u670d\u52a1\u5f53\u524d\u5b9e\u9645\u8fd0\u884c\u5bb9\u5668\uff0c\u5c06\u65b0\u521b\u5efa\u5e76\u542f\u52a8\u5bb9\u5668\uff1b\u53cd\u4e4b\uff0c\u5c06\u505c\u6b62\u5bb9\u5668\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u9009\u9879\uff1a <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li> -t, &#8211;timeout TIMEOUT \u505c\u6b62\u5bb9\u5668\u65f6\u5019\u7684\u8d85\u65f6\uff08\u9ed8\u8ba4\u4e3a 10 \u79d2\uff09\u3002 <\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"> <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">start \uff1a<\/mark><\/strong> \u683c\u5f0f\u4e3a docker-compose start [SERVICE&#8230;] \uff0c \u542f\u52a8\u5df2\u7ecf\u5b58\u5728\u7684\u670d\u52a1\u5bb9\u5668 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"> stop \uff1a<\/mark><\/strong>  \u683c\u5f0f\u4e3a docker-compose stop [options] [SERVICE&#8230;] <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u505c\u6b62\u5df2\u7ecf\u5904\u4e8e\u8fd0\u884c\u72b6\u6001\u7684\u5bb9\u5668\uff0c\u4f46\u4e0d\u5220\u9664\u5b83\u3002\u901a\u8fc7 docker-compose start \u53ef\u4ee5\u518d\u6b21\u542f\u52a8\u8fd9\u4e9b\u5bb9\u5668\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9009\u9879\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li> -t, &#8211;timeout TIMEOUT \u505c\u6b62\u5bb9\u5668\u65f6\u5019\u7684\u8d85\u65f6\uff08\u9ed8\u8ba4\u4e3a 10 \u79d2\uff09\u3002 <\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">top \uff1a<\/mark><\/strong> \u67e5\u770b\u5404\u4e2a\u670d\u52a1\u5bb9\u5668\u5185\u8fd0\u884c\u7684\u8fdb\u7a0b\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"> unpause \uff1a<\/mark><\/strong> \u683c\u5f0f\u4e3a docker-compose unpause [SERVICE&#8230;]  \uff0c \u6062\u590d\u5904\u4e8e\u6682\u505c\u72b6\u6001\u4e2d\u7684\u670d\u52a1\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">up \uff1a<\/mark><\/strong> \u683c\u5f0f\u4e3a docker-compose up [options] [SERVICE&#8230;] <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8be5\u547d\u4ee4\u5341\u5206\u5f3a\u5927\uff0c\u5b83\u5c06\u5c1d\u8bd5\u81ea\u52a8\u5b8c\u6210\u5305\u62ec\u6784\u5efa\u955c\u50cf\uff0c\uff08\u91cd\u65b0\uff09\u521b\u5efa\u670d\u52a1\uff0c\u542f\u52a8\u670d\u52a1\uff0c\u5e76\u5173\u8054 \u670d\u52a1\u76f8\u5173\u5bb9\u5668\u7684\u4e00\u7cfb\u5217\u64cd\u4f5c\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u94fe\u63a5\u7684\u670d\u52a1\u90fd\u5c06\u4f1a\u88ab\u81ea\u52a8\u542f\u52a8\uff0c\u9664\u975e\u5df2\u7ecf\u5904\u4e8e\u8fd0\u884c\u72b6\u6001\u3002 \u53ef\u4ee5\u8bf4\uff0c\u5927\u90e8\u5206\u65f6\u5019\u90fd\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7\u8be5\u547d\u4ee4\u6765\u542f\u52a8\u4e00\u4e2a\u9879\u76ee\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9ed8\u8ba4\u60c5\u51b5\uff0c docker-compose up \u542f\u52a8\u7684\u5bb9\u5668\u90fd\u5728\u524d\u53f0\uff0c\u63a7\u5236\u53f0\u5c06\u4f1a\u540c\u65f6\u6253\u5370\u6240\u6709\u5bb9\u5668\u7684\u8f93\u51fa\u4fe1 \u606f\uff0c\u53ef\u4ee5\u5f88\u65b9\u4fbf\u8fdb\u884c\u8c03\u8bd5\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u5f53\u901a\u8fc7 Ctrl-C \u505c\u6b62\u547d\u4ee4\u65f6\uff0c\u6240\u6709\u5bb9\u5668\u5c06\u4f1a\u505c\u6b62\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u4f7f\u7528 docker-compose up -d \uff0c\u5c06\u4f1a\u5728\u540e\u53f0\u542f\u52a8\u5e76\u8fd0\u884c\u6240\u6709\u7684\u5bb9\u5668\u3002\u4e00\u822c\u63a8\u8350\u751f\u4ea7\u73af\u5883\u4e0b\u4f7f\u7528\u8be5\u9009\u9879\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9ed8\u8ba4\u60c5\u51b5\uff0c\u5982\u679c\u670d\u52a1\u5bb9\u5668\u5df2\u7ecf\u5b58\u5728\uff0c docker-compose up \u5c06\u4f1a\u5c1d\u8bd5\u505c\u6b62\u5bb9\u5668\uff0c\u7136\u540e\u91cd\u65b0\u521b\u5efa \uff08\u4fdd\u6301\u4f7f\u7528 volumes-from \u6302\u8f7d\u7684\u5377\uff09\uff0c\u4ee5\u4fdd\u8bc1\u65b0\u542f\u52a8\u7684\u670d\u52a1\u5339\u914d docker-compose.yml \u6587\u4ef6 \u7684\u6700\u65b0\u5185\u5bb9\u3002\u5982\u679c\u7528\u6237\u4e0d\u5e0c\u671b\u5bb9\u5668\u88ab\u505c\u6b62\u5e76\u91cd\u65b0\u521b\u5efa\uff0c\u53ef\u4ee5\u4f7f\u7528 docker-compose up &#8211;norecreate \u3002\u8fd9\u6837\u5c06\u53ea\u4f1a\u542f\u52a8\u5904\u4e8e\u505c\u6b62\u72b6\u6001\u7684\u5bb9\u5668\uff0c\u800c\u5ffd\u7565\u5df2\u7ecf\u8fd0\u884c\u7684\u670d\u52a1\u3002\u5982\u679c\u7528\u6237\u53ea\u60f3\u91cd \u65b0\u90e8\u7f72\u67d0\u4e2a\u670d\u52a1\uff0c\u53ef\u4ee5\u4f7f\u7528 docker-compose up &#8211;no-deps -d  \u6765\u91cd\u65b0\u521b\u5efa\u670d\u52a1 \u5e76\u540e\u53f0\u505c\u6b62\u65e7\u670d\u52a1\uff0c\u542f\u52a8\u65b0\u670d\u52a1\uff0c\u5e76\u4e0d\u4f1a\u5f71\u54cd\u5230\u5176\u6240\u4f9d\u8d56\u7684\u670d\u52a1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9009\u9879\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li> -d \u5728\u540e\u53f0\u8fd0\u884c\u670d\u52a1\u5bb9\u5668\u3002 <\/li>\n\n\n\n<li>  &#8211;no-color \u4e0d\u4f7f\u7528\u989c\u8272\u6765\u533a\u5206\u4e0d\u540c\u7684\u670d\u52a1\u7684\u63a7\u5236\u53f0\u8f93\u51fa\u3002 <\/li>\n\n\n\n<li> &#8211;no-deps \u4e0d\u542f\u52a8\u670d\u52a1\u6240\u94fe\u63a5\u7684\u5bb9\u5668\u3002 <\/li>\n\n\n\n<li> &#8211;force-recreate \u5f3a\u5236\u91cd\u65b0\u521b\u5efa\u5bb9\u5668\uff0c\u4e0d\u80fd\u4e0e &#8211;no-recreate \u540c\u65f6\u4f7f\u7528\u3002 <\/li>\n\n\n\n<li> &#8211;no-recreate \u5982\u679c\u5bb9\u5668\u5df2\u7ecf\u5b58\u5728\u4e86\uff0c\u5219\u4e0d\u91cd\u65b0\u521b\u5efa\uff0c\u4e0d\u80fd\u4e0e &#8211;force-recreate \u540c\u65f6\u4f7f \u7528\u3002 <\/li>\n\n\n\n<li> &#8211;no-build \u4e0d\u81ea\u52a8\u6784\u5efa\u7f3a\u5931\u7684\u670d\u52a1\u955c\u50cf\u3002 <\/li>\n\n\n\n<li> -t, &#8211;timeout TIMEOUT \u505c\u6b62\u5bb9\u5668\u65f6\u5019\u7684\u8d85\u65f6\uff08\u9ed8\u8ba4\u4e3a 10 \u79d2\uff09\u3002 <\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"> <strong>version \uff1a<\/strong><\/mark> \u683c\u5f0f\u4e3a docker-compose version    \u6253\u5370\u7248\u672c\u4fe1\u606f\u3002 <\/p>\n\n\n\n<p class=\"has-text-align-center has-medium-font-size wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">docker-compose\u6a21\u677f\u6587\u4ef6<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">compose\u5141\u8bb8\u7528\u6237\u901a\u8fc7\u4e00\u4e2adocker-compose.yml\u6a21\u677f\u6587\u4ef6\uff08YAML \u683c\u5f0f\uff09\u6765\u5b9a\u4e49\u4e00\u7ec4\u76f8\u5173\u8054\u7684\u5e94\u7528\u5bb9\u5668\u4e3a\u4e00\u4e2a\u9879\u76ee\uff08project\uff09\u3002<br>compose\u6a21\u677f\u6587\u4ef6\u662f\u4e00\u4e2a\u5b9a\u4e49\u670d\u52a1\u3001\u7f51\u7edc\u548c\u5377\u7684YAML\u6587\u4ef6\u3002compose\u6a21\u677f\u6587\u4ef6\u9ed8\u8ba4\u8def\u5f84\u662f\u5f53\u524d\u76ee\u5f55\u4e0b\u7684docker-compose.yml\uff0c\u53ef\u4ee5\u4f7f\u7528.yml\u6216.yaml\u4f5c\u4e3a\u6587\u4ef6\u6269\u5c55\u540d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker-Compose\u6807\u51c6\u6a21\u677f\u6587\u4ef6\u5e94\u8be5\u5305\u542bversion\u3001services\u3001networks \u4e09\u5927\u90e8\u5206\uff0c\u6700\u5173\u952e\u7684\u662fservices\u548cnetworks\u4e24\u4e2a\u90e8\u5206\u3002  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3'\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<p class=\"wp-block-paragraph\"> Compose\u76ee\u524d\u6709\u4e09\u4e2a\u7248\u672c\u5206\u522b\u4e3aVersion 1\uff0cVersion 2\uff0cVersion 3 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">1\u3001<strong>image<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">image\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<pre class=\"wp-block-code\"><code>services:\n    web:\n        image: hello-world<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">2\u3001<strong>build\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\"><code>build: \/path\/to\/build\/dir<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"> \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<p class=\"wp-block-paragraph\"> <code>build: .\/dir<\/code> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \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<pre class=\"wp-block-code\"><code>build:\n  context: ..\/\n  dockerfile: path\/of\/Dockerfile<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">build\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<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">3\u3001<strong>context\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">context\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<pre class=\"wp-block-code\"><code>build:\n  context: .\/dir<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">4\u3001<strong>dockerfile\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u4f7f\u7528dockerfile\u6587\u4ef6\u6765\u6784\u5efa\uff0c\u5fc5\u987b\u6307\u5b9a\u6784\u5efa\u8def\u5f84 <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>build:\n  context: .\n  dockerfile: Dockerfile-alternate<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">5\u3001<strong>commond\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u4f7f\u7528command\u53ef\u4ee5\u8986\u76d6\u5bb9\u5668\u542f\u52a8\u540e\u9ed8\u8ba4\u6267\u884c\u7684\u547d\u4ee4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> <code>command: bundle&nbsp;exec<\/code>&nbsp;<code>thin -p 3000<\/code> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">6\u3001<strong>container_name\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compose\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<p class=\"wp-block-paragraph\"> container_name: app <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">7\u3001<strong>depends_on\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\"><code>version: '3'\nservices:\n  web:\n    build: .\n    depends_on:\n      - db\n      - redis\n  redis:\n    image: redis\n  db:\n    image: postgres<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"> \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<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">8\u3001<strong>PID\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> pid: &#8220;host&#8221; <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\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<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">9\u3001<strong>ports\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> ports\u7528\u4e8e\u6620\u5c04\u7aef\u53e3\u7684\u6807\u7b7e\uff0c \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\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ports:\n - \"3000\"\n - \"8000:8000\"\n - \"49100:22\"\n - \"127.0.0.1:8001:8001\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\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<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">10\u3001<strong>extra_hosts\uff1a<\/strong><\/mark><strong> <\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \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<pre class=\"wp-block-code\"><code>extra_hosts:\n - \"somehost:162.242.195.82\"\n - \"otherhost:50.31.209.229\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"> \u542f\u52a8\u540e\u67e5\u770b\u5bb9\u5668\u5185\u90e8hosts\uff1a <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>162.242.195.82  somehost\n50.31.209.229   otherhost<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">11\u3001<strong>volumes\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\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 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u6570\u636e\u5377\u7684\u683c\u5f0f\u53ef\u4ee5\u662f\u4e0b\u9762\u591a\u79cd\u5f62\u5f0f \uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>volumes:\n  \/\/ \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\n  - \/var\/lib\/mysql\n  \/\/ \u4f7f\u7528\u7edd\u5bf9\u8def\u5f84\u6302\u8f7d\u6570\u636e\u5377\n  - \/opt\/data:\/var\/lib\/mysql\n  \/\/ \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\n  - .\/cache:\/tmp\/cache\n  \/\/ \u4f7f\u7528\u7528\u6237\u7684\u76f8\u5bf9\u8def\u5f84\uff08~\/ \u8868\u793a\u7684\u76ee\u5f55\u662f \/home\/&lt;\u7528\u6237\u76ee\u5f55&gt;\/ \u6216\u8005 \/root\/\uff09\u3002\n  - ~\/configs:\/etc\/configs\/:ro\n  \/\/ \u5df2\u7ecf\u5b58\u5728\u7684\u547d\u540d\u7684\u6570\u636e\u5377\u3002\n  - datavolume:\/var\/lib\/mysql<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"> \u5982\u679c\u4e0d\u4f7f\u7528\u5bbf\u4e3b\u673a\u7684\u8def\u5f84\uff0c\u53ef\u4ee5\u6307\u5b9a\u4e00\u4e2avolume_driver <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> volume_driver: mydriver <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">12\u3001<strong>volumes_from\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u4ece\u53e6\u4e00\u4e2a\u670d\u52a1\u6216\u5bb9\u5668\u6302\u8f7d\u5176\u6570\u636e\u5377\uff1a <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>volumes_from:\n   - service_name   \n     - container_name<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">13\u3001<strong>dns\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \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<pre class=\"wp-block-code\"><code>dns\uff1a8.8.8.8\ndns\uff1a\n    - 8.8.8.8   \n      - 9.9.9.9<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">14\u3001<strong>expose\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\"><code>expose:\n    - \"3000\"\n    - \"8000\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">15\u3001<strong>links\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\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<pre class=\"wp-block-code\"><code>links:\n    - db\n    - db:database\n    - redis<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">16\u3001<strong>net\uff1a<\/strong><\/mark><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u8bbe\u7f6e\u7f51\u7edc\u6a21\u5f0f\u3002 <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>net: \"bridge\"\nnet: \"none\"\nnet: \"host\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">17\u3001environment:<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\uff0c\u4f8b\u5982\uff0c\u521b\u5efaMySQL\u5bb9\u5668\u7684\u65f6\u5019\u53ef\u4ee5\u6307\u5b9a\u5bc6\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>environment:\n  TZ: Asia\/Shanghai\n  MYSQL_ROOT_PASSWORD: 'password'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">18\u3001privileged:true\uff1a<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbe\u7f6e\u6743\u9650\uff0c\u53ef\u7528\u6765\u63d0\u6743<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>privileged: true<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6a21\u677f\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u7f16\u5199docker-compose.yml\u6587\u4ef6\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a<\/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\n\n\n<p class=\"wp-block-paragraph\"> docker-compose.yml\u6587\u4ef6\u6307\u5b9a\u4e863\u4e2aweb\u670d\u52a1 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u542f\u52a8\u5e94\u7528\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u4e00\u4e2awebapp\u76ee\u5f55\uff0c\u5c06docker-compose.yaml\u6587\u4ef6\u62f7\u8d1d\u5230webapp\u76ee\u5f55\u4e0b\uff0c\u4f7f\u7528docker-compose\u542f\u52a8\u5e94\u7528\u3002 <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> docker-compose up -d <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u670d\u52a1\u8bbf\u95ee\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> \u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95eeweb1\uff0cweb2\uff0cweb3 <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;127.0.0.1:6061\nhttp:\/\/127.0.0.1:6062\nhttp:\/\/127.0.0.1:6063<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u4e0b\u9762\u662f\u963f\u6ce2\u7f57\u5b98\u65b9\u63a8\u8350\u7684docker-compose.yml\u6587\u4ef6\uff0c\u8fd0\u884c\u540e\u5373\u53ef\u542f\u52a8apollo\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '2.1'\nservices:\n  apollo-quick-start:\n    image: nobodyiam\/apollo-quick-start\n    container_name: apollo-quick-start\n    depends_on:\n      apollo-db:\n        condition: service_healthy\n    ports:\n      - \"8080:8080\"\n      - \"8070:8070\"\n      - \"8090:8090\"\n    links:\n      - apollo-db\n\n  apollo-db:\n    image: mysql:8.0\n    container_name: apollo-db\n    privileged: true\n    environment:\n      TZ: Asia\/Shanghai\n      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'\n    healthcheck:\n      test: &#91;\"CMD\", \"mysqladmin\" ,\"ping\", \"-h\", \"localhost\"]\n      interval: 30s\n      timeout: 5s\n      retries: 10\n    depends_on:\n      - apollo-dbdata\n    ports:\n      - \"13306:3306\"\n    volumes:\n      - .\/sql:\/docker-entrypoint-initdb.d\n    volumes_from:\n      - apollo-dbdata\n\n  apollo-dbdata:\n    image: alpine:latest\n    container_name: apollo-dbdata\n    volumes:\n      - \/var\/lib\/mysql<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\uff1a\u4e0a\u56fe\u4e2dprivileged:true\u662f\u81ea\u5df1\u52a0\u7684\uff0c\u5176\u4f59\u90fd\u662f\u5b98\u65b9\u7684\uff0c\u4e0d\u52a0\u542f\u52a8db\u62a5\u9519\u6743\u9650\u4e0d\u8db3<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u6700\u65b0\u7684docker-compose.yml\u7528\u6cd5\u5df2\u7ecf\u4e0d\u9700\u8981\u5199\u7248\u672c\u53f7\uff0c\u76f4\u63a5services\u5f00\u5934\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  sub2api:\n    image: ccr.ccs.tencentyun.com\/workimage\/weishaw-sub2api:0.1.146\n    ports:\n      - \"8080:8080\"\n    environment:\n      - DATABASE_URL=postgres:\/\/postgres:Postgres1234@db:5432\/sub2api?sslmode=disable\n      - REDIS_URL=redis:\/\/redis:6379\n    depends_on:\n      - db\n      - redis\n\n  db:\n    image: ccr.ccs.tencentyun.com\/workimage\/postgres:15-alpine\n    environment:\n      - POSTGRES_USER=postgres\n      - POSTGRES_PASSWORD=Postgres1234\n      - POSTGRES_DB=sub2api\n    volumes:\n      - postgres_data:\/var\/lib\/postgresql\/data\n\n  redis:\n    image: ccr.ccs.tencentyun.com\/workimage\/redis:7-alpine\n    volumes:\n      - redis_data:\/data\n\nvolumes:\n  postgres_data:\n  redis_data:\n<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">\u5347\u7ea7<\/mark><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6bd4\u5982\u6211\u8981\u5347\u7ea7\u4e0a\u9762docker-compose.yml\u4e2d\u7684sub2api\u955c\u50cf\uff0c\u5176\u4ed6\u7684\u90fd\u4fdd\u6301\u4e0d\u53d8\uff0c\u53ea\u9700\u8981\u6267\u884c\u5982\u4e0b\u51e0\u6b65\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u62c9\u53d6\u6700\u65b0\u955c\u50cf<\/li>\n\n\n\n<li>\u4fee\u6539docker-compose.yml\uff0c\u5199\u6700\u65b0\u955c\u50cf\u7684\u540d\u5b57<\/li>\n\n\n\n<li>docker-compose up -d &#8211;no-deps sub2api   #\u5728\u540e\u53f0\u542f\u52a8 \/ \u91cd\u5efa\u6307\u5b9a\u7684\u8fd9\u4e2a\u670d\u52a1\u5bb9\u5668\uff0c\u4f46\u4e0d\u542f\u52a8\u3001\u4e0d\u91cd\u542f\u5b83\u4f9d\u8d56\u7684\u5176\u4ed6\u670d\u52a1<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose up -d --no-deps sub2api    #\u82f1\u6587\u7834\u6298\u53f7<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\uff1asub2api\u662fdocker-compose.yml\u4e2d\u5b9a\u4e49\u7684\u540d\u5b57\uff0c\u4e0d\u662fdocker ps \u4e2d\u770b\u5230\u7684\u540d\u5b57<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Docker Compose\u662f Docker \u5b98\u65b9\u7f16\u6392\uff08Orchestration\uff09\u9879\u76ee\u4e4b\u4e00\uff0c\u8d1f\u8d23\u5feb\u901f\u5728\u96c6\u7fa4\u4e2d [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":1554,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39,23],"tags":[83],"class_list":["post-1545","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docker","category-rong","tag-docker-compose"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/1545","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/comments?post=1545"}],"version-history":[{"count":32,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/1545\/revisions"}],"predecessor-version":[{"id":20997,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/1545\/revisions\/20997"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/media\/1554"}],"wp:attachment":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/media?parent=1545"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/categories?post=1545"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/tags?post=1545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}