{"id":272107,"date":"2016-01-14T10:32:01","date_gmt":"2016-01-14T07:32:01","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=272107"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=272107","title":{"rendered":"Docker compose \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e mixer-a"},"content":{"rendered":"<p>       \u041e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u043e\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0437\u0430\u043d\u0438\u043c\u0430\u044f\u0441\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Docker \u0438 Docker-compose, \u044d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0438\u043c\u0435\u044e\u0442 <code>docker-compose.yml<\/code> \u0444\u0430\u0439\u043b. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/20f\/682\/189\/20f6821893944dfc9e31fc696a43a586.png\" \/><\/div>\n<p>  \u041f\u0440\u0438\u0447\u0438\u043d, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e:  <\/p>\n<ul>\n<li>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0438\u0437\u043a\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0413\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u043e \u0441\u0443\u0442\u0438, \u043c\u043e\u0436\u0435\u0442 \u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c<\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412\u044b\u043d\u0435\u0441\u0435\u043d\u0438\u0435 <code>mock<\/code>-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f<\/li>\n<li>\u0412\u043d\u0435\u0448\u043d\u0438\u0438, \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443, \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 &#8216;\u0436\u0438\u0432\u0443\u0442&#8217; \u0432 docker \u0441\u0440\u0435\u0434\u0435<\/li>\n<\/ul>\n<p>  <a name=\"habracut\"><\/a>  <\/p>\n<h2><b>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/b><\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"#problem\">\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430<\/a><\/li>\n<li><a href=\"#solution\">\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/a><\/li>\n<li><a href=\"#examples\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438<\/a><br \/> \n<ul>\n<li><a href=\"#setup\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/a><\/li>\n<li><a href=\"#config\">\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/a><\/li>\n<li><a href=\"#start\">\u0417\u0430\u043f\u0443\u0441\u043a<\/a><\/li>\n<li><a href=\"#result\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#resources\">\u0420\u0435\u0441\u0443\u0440\u0441\u044b<\/a><\/li>\n<\/ul>\n<p>  <a name=\"problem\"><\/a><\/p>\n<h2><b>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430<\/b><\/h2>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 <code>N<\/code> \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0438\u0445 \u043a\u0430\u043a \u0446\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0438 \u0441\u0442\u0430\u043b\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u0427\u0442\u043e \u0436\u0435 \u0441\u0442\u0430\u043b\u043e \u0432\u0442\u043e\u0440\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0437\u0430 \u043e\u0434\u043d\u0438\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b?<\/p>\n<ul>\n<li>\u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438\u043c\u0435\u043d \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/li>\n<li>\u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u043f\u043e\u0440\u0442\u043e\u0432 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u043d\u0430 \u0445\u043e\u0441\u0442-\u043c\u0430\u0448\u0438\u043d\u0443<\/li>\n<li>\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0441\u0435\u0440\u0432\u0438\u0441\u0430<\/li>\n<li>\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439<\/li>\n<li>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u0448\u043d\u0438\u0445 \u0438\u043b\u0438 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0445\u0441\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/li>\n<\/ul>\n<p>  <a name=\"solution\"><\/a><\/p>\n<h2><b>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/b><\/h2>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 \u043d\u0430 \u0443\u043c \u043f\u0440\u0438\u0448\u043b\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u0443 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 <code>python<\/code> \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u044e <s>\u0433\u0440\u044f\u0437\u043d\u0443\u044e<\/s> \u0440\u0443\u0442\u0438\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e <code>docker-compose<\/code> \u0444\u0430\u0439\u043b\u043e\u0432. <br \/>  \u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 (\u043d\u0430 600 \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u043a\u043e\u0434\u0430) <a href=\"https:\/\/github.com\/paunin\/docker-compose-mixer\">\u0441\u043a\u0440\u0438\u043f\u0442<\/a> \u0432 \u0446\u0435\u043b\u043e\u043c \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0438\u0435 \u043d\u0435\u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u043e \u043c\u043d\u043e\u0439.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u0430\u043a \u0431\u043e\u043d\u0443\u0441, \u043f\u043e \u043c\u0438\u043c\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u043c\u043e\u0433 \u0440\u0435\u0448\u0438\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0443\u043c\u043e\u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u043e\u0434\u043d\u0438\u043c <code>docker-compose<\/code> \u0444\u0430\u0439\u043b\u043e\u043c.<\/p>\n<p>  <a name=\"examples\"><\/a><\/p>\n<h2><b>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/b><\/h2>\n<p>  \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0448\u0430\u0433\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/p>\n<p>  <a name=\"setup\"><\/a><\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h3>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u043c <code>python<\/code> \u043c\u043e\u0434\u0443\u043b\u0435\u043c  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">sudo wget https:\/\/github.com\/paunin\/docker-compose-mixer\/blob\/master\/dist\/dc-mixer?raw=true -O \/usr\/local\/bin\/dc-mixer sudo chmod +x \/usr\/local\/bin\/dc-mixer <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <a name=\"config\"><\/a><\/p>\n<h3>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h3>\n<p>  \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e <code>docker-compose-mixer.yml<\/code> \u0444\u0430\u0439\u043b\u0430 \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u0432\u0430 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435. <\/p>\n<p>  \u0421\u043a\u0430\u0436\u0435\u043c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c 2 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <code>project A<\/code> \u0438 <code>project B<\/code> c \u0434\u0432\u0443\u043c\u044f <code>docker-compose.yml<\/code> \u0444\u0430\u0439\u043b\u0430\u043c\u0438.<br \/>  \u041f\u0440\u043e\u0435\u043a\u0442\u044b, \u044f\u0432\u043b\u044f\u044f\u0441\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432: <code>java-application, redis, rabbitmq, mail<\/code>, \u043f\u0440\u043e\u0435\u043a\u0442 <code>project A<\/code>(\u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f) \u0442\u0430\u043a \u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>mysql<\/code> \u0441\u0435\u0440\u0432\u0438\u0441.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">project A<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">$ cat ..\/proj_a\/docker-compose.yml sources:   build: images\/sources   volumes:     - .:\/var\/application.host  application:   build: images\/java   dockerfile: application.yml   dns:     - 8.8.8.8     - 9.9.9.9   hostname: application.host   working_dir: \/var\/application.host   cgroup_parent: m-executor-abcd   links:     - redis:redis     - rabbitmq     - mail     - mysql:db   volumes_from:     - sources   command: &quot;\/start.sh&quot;   env_file:     - .\/env_files\/application.env     - .\/env_files\/rabbit.env   environment:     - DB_DRIVER: mysql     - DB_PORT: 3306   ports:     - &quot;80:80&quot;     #http     - &quot;1098:1098&quot; #jmx   external_links:     - redis_1     - project_db_1:mysql   extra_hosts:     - &quot;somehost:162.242.195.82&quot;   labels:     com.example.description: &quot;Accounting webapp&quot;     com.example.department: &quot;Finance&quot;  redis:   labels:     - &quot;com.example.description=Accounting webapp&quot;     - &quot;com.example.department=Finance&quot;   extends:     file: ..\/redis.yml     service: redisbase   expose:   ports:     - &quot;6379:6379&quot;     - &quot;127.0.0.1:6370:6370&quot;   log_driver: &quot;syslog&quot;   log_opt:     syslog-address: &quot;tcp:\/\/192.168.0.42:123&quot;   net: &quot;bridge&quot;  rabbitmq:   build: images\/rabbitmq   ports:     - &quot;15672:15672&quot;   volumes_from:     - sources   command: \/start.sh   env_file:     - .\/env_files\/rabbit.env  mail:   build: images\/mail   hostname: mail   domainname: application.host   expose:     - 25     - 143   ports:     - &quot;25:25&quot;     - &quot;143:143&quot;   volumes:     - .\/images\/mail\/spamassassin:\/tmp\/spamassassin\/     - .\/images\/mail\/postfix:\/tmp\/postfix\/     - .\/images\/mail\/mail:\/tmp\/mail\/  mysql:   build: images\/mysql   ports:     - 3602 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">project B<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">$ cat .\/proj_b\/docker-compose.yml sources:   build: images\/sources   volumes:     - .:\/var\/application.host  application:   build: images\/java   dockerfile: application.yml   dns:     - 8.8.8.8     - 9.9.9.9   hostname: application.host   working_dir: \/var\/application.host   cgroup_parent: m-executor-abcd   links:     - redis:redis     - rabbitmq     - mail   volumes_from:     - sources   command: &quot;\/start.sh&quot;   env_file:     - .\/env_files\/application.env     - .\/env_files\/rabbit.env   environment:     - VARIABLE: value   ports:     - &quot;80:80&quot;     #http     - &quot;1098:1098&quot; #jmx   external_links:     - redis_1     - project_db_1:mysql   extra_hosts:     - &quot;somehost:162.242.195.82&quot;   labels:     com.example.description: &quot;Accounting webapp&quot;     com.example.department: &quot;Finance&quot;  redis:   labels:     - &quot;com.example.description=Accounting webapp&quot;     - &quot;com.example.department=Finance&quot;   extends:     file: ..\/redis.yml     service: redisbase   expose:   ports:     - &quot;6379:6379&quot;     - &quot;127.0.0.1:6370:6373&quot;   log_driver: &quot;syslog&quot;   log_opt:     syslog-address: &quot;tcp:\/\/192.168.0.42:123&quot;   net: &quot;bridge&quot;  rabbitmq:   build: images\/rabbitmq   ports:     - &quot;15672:15672&quot;   volumes_from:     - sources   command: \/start.sh   env_file:     - .\/env_files\/rabbit.env  mail:   build: images\/mail   hostname: mail   domainname: application.host   expose:     - 25     - 143   ports:     - &quot;25:25&quot;     - &quot;143:143&quot;   volumes:     - .\/images\/mail\/spamassassin:\/tmp\/spamassassin\/     - .\/images\/mail\/postfix:\/tmp\/postfix\/     - .\/images\/mail\/mail:\/tmp\/mail\/ <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043e\u0431\u044a\u0435\u0434\u0435\u043d\u0438\u0442\u044c \u0434\u0432\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u043e\u0434\u043d\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u043e\u0433\u043e <code>rabbitmq<\/code> \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 <code>pgsql<\/code> \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 (\u0437\u0430\u043c\u0435\u043d\u0438\u0432 mysql) <br \/>  \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u0430 \u043b\u0435\u0436\u0430\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 <code>.\/docker-compose-mixer.yml<\/code> (\u043e\u043f\u0446\u0438\u044f <code>-i, --input-file<\/code> \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u043c\u044f \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430)  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">docker-compose-mixer.yml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">$ cat .\/docker-compose-mixer.yml includes:   proja: ..\/proj_a\/docker-compose.yml   projb: .\/proj_b\/docker-compose.yml ignores:   - projbrabbitmq overrides:   projbapplication:     links:       - projaredis:redis       - projarabbitmq:rabbitmq       - projamail:mail   projaapplication:     links:       - projaredis:redis       - projarabbitmq:rabbitmq       - projamail:mail       - pgsql:db     environment:       - DB_DRIVER: pgsql       - DB_PORT: 5432 master_services:   pgsql:     image: pgsql:latest     expose:        - 5432     ports:       5432:5432 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <a name=\"start\"><\/a><\/p>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a<\/h3>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u0430 `<code>dc-mixer -v<\/code>` \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432 \u0432\u0435\u0440\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0444\u0430\u0439\u043b. \u041e\u043f\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">$ dc-mixer --help Compile docker-compose from several docker-compose.yml files  Usage:   dc-mixer [options]  Options:   -h, --help                Print help information   -i, --input-file          Input file (default `docker-compose-mixer.yml` in current directory)   -o, --output-file         Output file (default `docker-compose.yml` in current directory)   -h, --help                Print help information   -v, --verbose             Enable verbose mode  For more information read documentation: https:\/\/github.com\/paunin\/docker-compose-mixer <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <a name=\"result\"><\/a><\/p>\n<h3>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/h3>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d \u0432 \u0444\u0430\u0439\u043b <code>.\/docker-compose.yml<\/code>. (\u043e\u043f\u0446\u0438\u044f <code>-o, --output-file<\/code> \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u043c\u044f \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430)  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">$ dc-mixer -v -o docker-compose.yml  DEBUG:root:Start compiling compose file... DEBUG:root:Input file: \/Users\/paunin\/Sites\/dc-mixer.local\/examples\/example2\/proj\/docker-compose-mixer.yml; output file: docker-compose.yml DEBUG:root:Mixer config is below:         {'overrides': {'projbapplication': {'links': ['projaredis:redis', 'projarabbitmq:rabbitmq', 'projamail:mail']}, 'projaapplication': {'environment': {'DB_DRIVER': 'pgsql', 'DB_PORT': 5432}, 'links': ['projaredis:redis', 'projarabbitmq:rabbitmq', 'projamail:mail', 'pgsql:db']}}, 'master_services': {'pgsql': {'image': 'pgsql:latest', 'expose': [5432], 'ports': '5432:5432'}}, 'ignores': ['projbrabbitmq'], 'includes': {'projb': '.\/proj_b\/docker-compose.yml', 'proja': '..\/proj_a\/docker-compose.yml'}} DEBUG:root:Creating scope for file: \/Users\/paunin\/Sites\/dc-mixer.local\/examples\/example2\/proj\/proj_b\/docker-compose.yml and prefix: projb DEBUG:root:Creating scope for file: \/Users\/paunin\/Sites\/dc-mixer.local\/examples\/example2\/proj_a\/docker-compose.yml and prefix: proja DEBUG:root:Resolving services names DEBUG:root:Resolving services paths with DEBUG:root:Resolving services ports DEBUG:root:Redefined ports:         {'projaapplication': {80: 81, 1098: 1099}, 'projaredis': {6370: 6371, 6379: 6380}, 'projamail': {25: 26, 143: 144}} DEBUG:root:Result scope is:         {'projasources': {'build': '..\/proj_a\/images\/sources', 'volumes': ['.\/..\/proj_a:\/var\/application.host']}, 'projaredis': {'log_opt': {'syslog-address': 'tcp:\/\/192.168.0.42:123'}, 'log_driver': 'syslog', 'expose': None, 'labels': ['com.example.description=Accounting webapp', 'com.example.department=Finance'], 'extends': {'service': 'redisbase', 'file': '..\/redis.yml'}, 'net': 'bridge', 'ports': ['6380:6379', '127.0.0.1:6371:6370']}, 'projbmail': {'domainname': 'application.host', 'expose': [25, 143], 'hostname': 'mail', 'build': 'proj_b\/images\/mail', 'volumes': ['.\/proj_b\/images\/mail\/spamassassin:\/tmp\/spamassassin\/', '.\/proj_b\/images\/mail\/postfix:\/tmp\/postfix\/', '.\/proj_b\/images\/mail\/mail:\/tmp\/mail\/'], 'ports': ['25:25', '143:143']}, 'projamail': {'domainname': 'application.host', 'expose': [25, 143], 'hostname': 'mail', 'build': '..\/proj_a\/images\/mail', 'volumes': ['.\/..\/proj_a\/images\/mail\/spamassassin:\/tmp\/spamassassin\/', '.\/..\/proj_a\/images\/mail\/postfix:\/tmp\/postfix\/', '.\/..\/proj_a\/images\/mail\/mail:\/tmp\/mail\/'], 'ports': ['26:25', '144:143']}, 'pgsql': {'image': 'pgsql:latest', 'expose': [5432], 'ports': '5432:5432'}, 'projbapplication': {'hostname': 'application.host', 'links': ['projaredis:redis', 'projarabbitmq:rabbitmq', 'projamail:mail'], 'cgroup_parent': 'm-executor-abcd', 'labels': {'com.example.description': 'Accounting webapp', 'com.example.department': 'Finance'}, 'extra_hosts': ['somehost:162.242.195.82'], 'environment': [{'VARIABLE': 'value'}], 'working_dir': '\/var\/application.host', 'command': '\/start.sh', 'build': 'proj_b\/images\/java', 'dns': ['8.8.8.8', '9.9.9.9'], 'volumes_from': ['projbsources'], 'env_file': ['proj_b\/env_files\/application.env', 'proj_b\/env_files\/rabbit.env'], 'dockerfile': 'application.yml', 'ports': ['80:80', '1098:1098'], 'external_links': ['redis_1', 'project_db_1:mysql']}, 'projaapplication': {'hostname': 'application.host', 'links': ['projaredis:redis', 'projarabbitmq:rabbitmq', 'projamail:mail', 'pgsql:db'], 'cgroup_parent': 'm-executor-abcd', 'labels': {'com.example.description': 'Accounting webapp', 'com.example.department': 'Finance'}, 'extra_hosts': ['somehost:162.242.195.82'], 'environment': {'DB_DRIVER': 'pgsql', 'DB_PORT': 5432}, 'working_dir': '\/var\/application.host', 'command': '\/start.sh', 'build': '..\/proj_a\/images\/java', 'dns': ['8.8.8.8', '9.9.9.9'], 'volumes_from': ['projasources'], 'env_file': ['..\/proj_a\/env_files\/application.env', '..\/proj_a\/env_files\/rabbit.env'], 'dockerfile': 'application.yml', 'ports': ['81:80', '1099:1098'], 'external_links': ['redis_1', 'project_db_1:mysql']}, 'projamysql': {'build': '..\/proj_a\/images\/mysql', 'ports': []}, 'projarabbitmq': {'volumes_from': ['projasources'], 'env_file': ['..\/proj_a\/env_files\/rabbit.env'], 'command': '\/start.sh', 'build': '..\/proj_a\/images\/rabbitmq', 'ports': ['15672:15672']}, 'projbredis': {'log_opt': {'syslog-address': 'tcp:\/\/192.168.0.42:123'}, 'log_driver': 'syslog', 'expose': None, 'labels': ['com.example.description=Accounting webapp', 'com.example.department=Finance'], 'extends': {'service': 'redisbase', 'file': 'redis.yml'}, 'net': 'bridge', 'ports': ['6379:6379', '127.0.0.1:6370:6373']}, 'projbsources': {'build': 'proj_b\/images\/sources', 'volumes': ['.\/proj_b:\/var\/application.host']}} DEBUG:root:Save result scope in the file &quot;docker-compose.yml&quot;  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 docker-compose.yml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">pgsql:    expose:      - 5432   image: &quot;pgsql:latest&quot;   ports: &quot;5432:5432&quot; projaapplication:    build: ..\/proj_a\/images\/java   cgroup_parent: m-executor-abcd   command: \/start.sh   dns:      - &quot;8.8.8.8&quot;     - &quot;9.9.9.9&quot;   dockerfile: application.yml   env_file:      - ..\/proj_a\/env_files\/application.env     - ..\/proj_a\/env_files\/rabbit.env   environment:      DB_DRIVER: pgsql     DB_PORT: 5432   external_links:      - redis_1     - &quot;project_db_1:mysql&quot;   extra_hosts:      - &quot;somehost:162.242.195.82&quot;   hostname: application.host   labels:      com.example.department: Finance     com.example.description: &quot;Accounting webapp&quot;   links:      - &quot;projaredis:redis&quot;     - &quot;projarabbitmq:rabbitmq&quot;     - &quot;projamail:mail&quot;     - &quot;pgsql:db&quot;   ports:      - &quot;81:80&quot;     - &quot;1099:1098&quot;   volumes_from:      - projasources   working_dir: \/var\/application.host projamail:    build: ..\/proj_a\/images\/mail   domainname: application.host   expose:      - 25     - 143   hostname: mail   ports:      - &quot;26:25&quot;     - &quot;144:143&quot;   volumes:      - &quot;.\/..\/proj_a\/images\/mail\/spamassassin:\/tmp\/spamassassin\/&quot;     - &quot;.\/..\/proj_a\/images\/mail\/postfix:\/tmp\/postfix\/&quot;     - &quot;.\/..\/proj_a\/images\/mail\/mail:\/tmp\/mail\/&quot; projamysql:    build: ..\/proj_a\/images\/mysql   ports: [] projarabbitmq:    build: ..\/proj_a\/images\/rabbitmq   command: \/start.sh   env_file:      - ..\/proj_a\/env_files\/rabbit.env   ports:      - &quot;15672:15672&quot;   volumes_from:      - projasources projaredis:    expose: ~   extends:      file: ..\/redis.yml     service: redisbase   labels:      - &quot;com.example.description=Accounting webapp&quot;     - com.example.department=Finance   log_driver: syslog   log_opt:      syslog-address: &quot;tcp:\/\/192.168.0.42:123&quot;   net: bridge   ports:      - &quot;6380:6379&quot;     - &quot;127.0.0.1:6371:6370&quot; projasources:    build: ..\/proj_a\/images\/sources   volumes:      - &quot;.\/..\/proj_a:\/var\/application.host&quot; projbapplication:    build: proj_b\/images\/java   cgroup_parent: m-executor-abcd   command: \/start.sh   dns:      - &quot;8.8.8.8&quot;     - &quot;9.9.9.9&quot;   dockerfile: application.yml   env_file:      - proj_b\/env_files\/application.env     - proj_b\/env_files\/rabbit.env   environment:      -        VARIABLE: value   external_links:      - redis_1     - &quot;project_db_1:mysql&quot;   extra_hosts:      - &quot;somehost:162.242.195.82&quot;   hostname: application.host   labels:      com.example.department: Finance     com.example.description: &quot;Accounting webapp&quot;   links:      - &quot;projaredis:redis&quot;     - &quot;projarabbitmq:rabbitmq&quot;     - &quot;projamail:mail&quot;   ports:      - &quot;80:80&quot;     - &quot;1098:1098&quot;   volumes_from:      - projbsources   working_dir: \/var\/application.host projbmail:    build: proj_b\/images\/mail   domainname: application.host   expose:      - 25     - 143   hostname: mail   ports:      - &quot;25:25&quot;     - &quot;143:143&quot;   volumes:      - &quot;.\/proj_b\/images\/mail\/spamassassin:\/tmp\/spamassassin\/&quot;     - &quot;.\/proj_b\/images\/mail\/postfix:\/tmp\/postfix\/&quot;     - &quot;.\/proj_b\/images\/mail\/mail:\/tmp\/mail\/&quot; projbredis:    expose: ~   extends:      file: redis.yml     service: redisbase   labels:      - &quot;com.example.description=Accounting webapp&quot;     - com.example.department=Finance   log_driver: syslog   log_opt:      syslog-address: &quot;tcp:\/\/192.168.0.42:123&quot;   net: bridge   ports:      - &quot;6379:6379&quot;     - &quot;127.0.0.1:6370:6373&quot; projbsources:    build: proj_b\/images\/sources   volumes:      - &quot;.\/proj_b:\/var\/application.host&quot; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0425\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u0434\u0435\u043b \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u0435\u0431\u0430\u0433\u0435\u0440\u0430 `<code>DEBUG:root:Redefined ports<\/code>`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0434\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0440\u0442\u0430\u0445.<\/p>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/github.com\/paunin\/docker-compose-mixer\/tree\/master\/examples\/example2\">\u0442\u0443\u0442<\/a><\/p>\n<p>  <a name=\"resources\"><\/a><\/p>\n<h2><b>\u0420\u0435\u0441\u0443\u0440\u0441\u044b<\/b><\/h2>\n<p>  <\/p>\n<ul>\n<li> \u041f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 github: <a href=\"https:\/\/github.com\/paunin\/docker-compose-mixer\">github.com\/paunin\/docker-compose-mixer<\/a><\/li>\n<li>Docker-compose \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441: <a href=\"https:\/\/docs.docker.com\/compose\/compose-file\/\">docs.docker.com\/compose\/compose-file<\/a><\/li>\n<\/ul>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/274581\/\"> http:\/\/habrahabr.ru\/post\/274581\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u041e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u043e\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0437\u0430\u043d\u0438\u043c\u0430\u044f\u0441\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Docker \u0438 Docker-compose, \u044d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0438\u043c\u0435\u044e\u0442 <code>docker-compose.yml<\/code> \u0444\u0430\u0439\u043b. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/20f\/682\/189\/20f6821893944dfc9e31fc696a43a586.png\" \/><\/div>\n<p>  \u041f\u0440\u0438\u0447\u0438\u043d, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e:  <\/p>\n<ul>\n<li>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0438\u0437\u043a\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0413\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u043e \u0441\u0443\u0442\u0438, \u043c\u043e\u0436\u0435\u0442 \u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c<\/li>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412\u044b\u043d\u0435\u0441\u0435\u043d\u0438\u0435 <code>mock<\/code>-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f<\/li>\n<li>\u0412\u043d\u0435\u0448\u043d\u0438\u0438, \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443, \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 &#8216;\u0436\u0438\u0432\u0443\u0442&#8217; \u0432 docker \u0441\u0440\u0435\u0434\u0435<\/li>\n<\/ul>\n<p>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-272107","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/272107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=272107"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/272107\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=272107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=272107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=272107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}