[{"data":1,"prerenderedAt":943},["ShallowReactive",2],{"navigation":3,"post-\u002Fposts\u002F2018\u002Fdockerfile-maven":20,"surroundPosts-\u002Fposts\u002F2018\u002Fdockerfile-maven":930},[4,8,12,16],{"title":5,"path":6,"stem":7},"首页","\u002F","00.index",{"title":9,"path":10,"stem":11},"文章","\u002Fposts","01.posts",{"title":13,"path":14,"stem":15},"动态","\u002Fmoments","02.moments",{"title":17,"path":18,"stem":19},"关于","\u002Fabout","09.about",{"id":21,"title":22,"body":23,"class":909,"cover":909,"coverSize":909,"date":910,"description":911,"draft":912,"extension":913,"hideComments":912,"location":909,"meta":914,"navigation":75,"path":915,"readingTime":916,"seo":921,"sitemap":922,"stem":923,"tags":924,"time":909,"weather":928,"__hash__":929},"posts\u002Fposts\u002F2018\u002F20180412.dockerfile-maven.md","Maven 项目 Docker 一键发布配置",{"type":24,"value":25,"toc":907},"minimark",[26,44,47,183,189,207,799,806,897,903],[27,28,29,30,37,38,43],"p",{},"Docker 用了很久了，之前 Maven 项目一直用的",[31,32,36],"a",{"href":33,"rel":34},"https:\u002F\u002Fgithub.com\u002Fspotify\u002Fdocker-maven-plugin",[35],"nofollow","docker-maven-plugin","，但是作者目前已经不推荐使用这种方式了，该项目已经不再更新功能，只提供 bugfix。他们的新项目叫做",[31,39,42],{"href":40,"rel":41},"https:\u002F\u002Fgithub.com\u002Fspotify\u002Fdockerfile-maven",[35],"dockerfile-maven","，配置上有些不同，之前一直没时间去更新，最近的一个项目中，采用了最新的插件，中间也踩过不少坑，刚刚终于都搞定了，记录一下。",[27,45,46],{},"Dockerfile 无需多说，整理了一个通用的，可以用在任意 Spring Boot 项目中，如下：",[48,49,54],"pre",{"className":50,"code":51,"language":52,"meta":53,"style":53},"language-dockerfile shiki shiki-themes material-theme-lighter github-light github-dark","FROM frolvlad\u002Falpine-oraclejdk8:slim\n\nRUN ln -sf \u002Fusr\u002Fshare\u002Fzoneinfo\u002FAsia\u002FShanghai \u002Fetc\u002Flocaltime\n\nVOLUME \u002Ftmp\n\nARG JAR_FILE\nADD ${JAR_FILE} app.jar\nRUN sh -c 'touch \u002Fapp.jar'\nENV JAVA_OPTS=\"\"\nENV ENV=\"\"\nENTRYPOINT [ \"sh\", \"-c\", \"java $JAVA_OPTS -Djava.security.egd=file:\u002Fdev\u002F.\u002Furandom -jar \u002Fapp.jar --spring.profiles.active=$ENV\" ]\n","dockerfile","",[55,56,57,70,77,86,91,100,105,114,123,135,147,157],"code",{"__ignoreMap":53},[58,59,62,66],"span",{"class":60,"line":61},"line",1,[58,63,65],{"class":64},"sw1J6","FROM",[58,67,69],{"class":68},"su5hD"," frolvlad\u002Falpine-oraclejdk8:slim\n",[58,71,73],{"class":60,"line":72},2,[58,74,76],{"emptyLinePlaceholder":75},true,"\n",[58,78,80,83],{"class":60,"line":79},3,[58,81,82],{"class":64},"RUN",[58,84,85],{"class":68}," ln -sf \u002Fusr\u002Fshare\u002Fzoneinfo\u002FAsia\u002FShanghai \u002Fetc\u002Flocaltime\n",[58,87,89],{"class":60,"line":88},4,[58,90,76],{"emptyLinePlaceholder":75},[58,92,94,97],{"class":60,"line":93},5,[58,95,96],{"class":64},"VOLUME",[58,98,99],{"class":68}," \u002Ftmp\n",[58,101,103],{"class":60,"line":102},6,[58,104,76],{"emptyLinePlaceholder":75},[58,106,108,111],{"class":60,"line":107},7,[58,109,110],{"class":64},"ARG",[58,112,113],{"class":68}," JAR_FILE\n",[58,115,117,120],{"class":60,"line":116},8,[58,118,119],{"class":64},"ADD",[58,121,122],{"class":68}," ${JAR_FILE} app.jar\n",[58,124,126,128,131],{"class":60,"line":125},9,[58,127,82],{"class":64},[58,129,130],{"class":68}," sh -c ",[58,132,134],{"class":133},"s_sjI","'touch \u002Fapp.jar'\n",[58,136,138,141,144],{"class":60,"line":137},10,[58,139,140],{"class":64},"ENV",[58,142,143],{"class":68}," JAVA_OPTS=",[58,145,146],{"class":133},"\"\"\n",[58,148,150,152,155],{"class":60,"line":149},11,[58,151,140],{"class":64},[58,153,154],{"class":68}," ENV=",[58,156,146],{"class":133},[58,158,160,163,166,169,172,175,177,180],{"class":60,"line":159},12,[58,161,162],{"class":64},"ENTRYPOINT",[58,164,165],{"class":68}," [ ",[58,167,168],{"class":133},"\"sh\"",[58,170,171],{"class":68},", ",[58,173,174],{"class":133},"\"-c\"",[58,176,171],{"class":68},[58,178,179],{"class":133},"\"java $JAVA_OPTS -Djava.security.egd=file:\u002Fdev\u002F.\u002Furandom -jar \u002Fapp.jar --spring.profiles.active=$ENV\"",[58,181,182],{"class":68}," ]\n",[27,184,185,186,188],{},"在用阿里云容器服务的时候，这里的",[55,187,140],{},"可以直接显示到配置项中进行配置，根据不同的配置选择不同的 profiles 文件。",[27,190,191,194,195,198,199,202,203,206],{},[55,192,193],{},"pom.xml","文件中，加入",[55,196,197],{},"plugin","，会自动添加版本号和",[55,200,201],{},"latest","两个",[55,204,205],{},"tag","，并推送。",[48,208,212],{"className":209,"code":210,"language":211,"meta":53,"style":53},"language-xml shiki shiki-themes material-theme-lighter github-light github-dark","\u003Cplugin>\n    \u003CgroupId>com.spotify\u003C\u002FgroupId>\n    \u003CartifactId>dockerfile-maven-plugin\u003C\u002FartifactId>\n    \u003Cversion>1.4.0\u003C\u002Fversion>\n    \u003Cexecutions>\n        \u003Cexecution>\n            \u003Cid>build-image\u003C\u002Fid>\n            \u003Cphase>package\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>build\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n        \u003C\u002Fexecution>\n        \u003Cexecution>\n            \u003Cid>tag-image-version\u003C\u002Fid>\n            \u003Cphase>deploy\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>tag\u003C\u002Fgoal>\n                \u003Cgoal>push\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Ctag>${project.version}\u003C\u002Ftag>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n        \u003Cexecution>\n            \u003Cid>tag-image-latest\u003C\u002Fid>\n            \u003Cphase>deploy\u003C\u002Fphase>\n            \u003Cgoals>\n                \u003Cgoal>tag\u003C\u002Fgoal>\n                \u003Cgoal>push\u003C\u002Fgoal>\n            \u003C\u002Fgoals>\n            \u003Cconfiguration>\n                \u003Ctag>latest\u003C\u002Ftag>\n            \u003C\u002Fconfiguration>\n        \u003C\u002Fexecution>\n    \u003C\u002Fexecutions>\n    \u003Cconfiguration>\n        \u003Crepository>registry.cn-hangzhou.aliyuncs.com\u002Fxxx\u002F${project.artifactId}\u003C\u002Frepository>\n        \u003Ctag>${project.version}\u003C\u002Ftag>\n        \u003CuseMavenSettingsForAuth>true\u003C\u002FuseMavenSettingsForAuth>\n        \u003CbuildArgs>\n            \u003CJAR_FILE>target\u002F${project.build.finalName}.jar\u003C\u002FJAR_FILE>\n        \u003C\u002FbuildArgs>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n\n","xml",[55,213,214,226,247,265,283,292,302,321,339,348,367,376,385,394,412,430,439,456,474,483,493,511,520,529,538,556,573,582,599,616,625,634,651,660,669,679,688,707,724,743,753,772,781,790],{"__ignoreMap":53},[58,215,216,220,223],{"class":60,"line":61},[58,217,219],{"class":218},"sP7_E","\u003C",[58,221,197],{"class":222},"sQzsp",[58,224,225],{"class":218},">\n",[58,227,228,231,234,237,240,243,245],{"class":60,"line":72},[58,229,230],{"class":218},"    \u003C",[58,232,233],{"class":222},"groupId",[58,235,236],{"class":218},">",[58,238,239],{"class":68},"com.spotify",[58,241,242],{"class":218},"\u003C\u002F",[58,244,233],{"class":222},[58,246,225],{"class":218},[58,248,249,251,254,256,259,261,263],{"class":60,"line":79},[58,250,230],{"class":218},[58,252,253],{"class":222},"artifactId",[58,255,236],{"class":218},[58,257,258],{"class":68},"dockerfile-maven-plugin",[58,260,242],{"class":218},[58,262,253],{"class":222},[58,264,225],{"class":218},[58,266,267,269,272,274,277,279,281],{"class":60,"line":88},[58,268,230],{"class":218},[58,270,271],{"class":222},"version",[58,273,236],{"class":218},[58,275,276],{"class":68},"1.4.0",[58,278,242],{"class":218},[58,280,271],{"class":222},[58,282,225],{"class":218},[58,284,285,287,290],{"class":60,"line":93},[58,286,230],{"class":218},[58,288,289],{"class":222},"executions",[58,291,225],{"class":218},[58,293,294,297,300],{"class":60,"line":102},[58,295,296],{"class":218},"        \u003C",[58,298,299],{"class":222},"execution",[58,301,225],{"class":218},[58,303,304,307,310,312,315,317,319],{"class":60,"line":107},[58,305,306],{"class":218},"            \u003C",[58,308,309],{"class":222},"id",[58,311,236],{"class":218},[58,313,314],{"class":68},"build-image",[58,316,242],{"class":218},[58,318,309],{"class":222},[58,320,225],{"class":218},[58,322,323,325,328,330,333,335,337],{"class":60,"line":116},[58,324,306],{"class":218},[58,326,327],{"class":222},"phase",[58,329,236],{"class":218},[58,331,332],{"class":68},"package",[58,334,242],{"class":218},[58,336,327],{"class":222},[58,338,225],{"class":218},[58,340,341,343,346],{"class":60,"line":125},[58,342,306],{"class":218},[58,344,345],{"class":222},"goals",[58,347,225],{"class":218},[58,349,350,353,356,358,361,363,365],{"class":60,"line":137},[58,351,352],{"class":218},"                \u003C",[58,354,355],{"class":222},"goal",[58,357,236],{"class":218},[58,359,360],{"class":68},"build",[58,362,242],{"class":218},[58,364,355],{"class":222},[58,366,225],{"class":218},[58,368,369,372,374],{"class":60,"line":149},[58,370,371],{"class":218},"            \u003C\u002F",[58,373,345],{"class":222},[58,375,225],{"class":218},[58,377,378,381,383],{"class":60,"line":159},[58,379,380],{"class":218},"        \u003C\u002F",[58,382,299],{"class":222},[58,384,225],{"class":218},[58,386,388,390,392],{"class":60,"line":387},13,[58,389,296],{"class":218},[58,391,299],{"class":222},[58,393,225],{"class":218},[58,395,397,399,401,403,406,408,410],{"class":60,"line":396},14,[58,398,306],{"class":218},[58,400,309],{"class":222},[58,402,236],{"class":218},[58,404,405],{"class":68},"tag-image-version",[58,407,242],{"class":218},[58,409,309],{"class":222},[58,411,225],{"class":218},[58,413,415,417,419,421,424,426,428],{"class":60,"line":414},15,[58,416,306],{"class":218},[58,418,327],{"class":222},[58,420,236],{"class":218},[58,422,423],{"class":68},"deploy",[58,425,242],{"class":218},[58,427,327],{"class":222},[58,429,225],{"class":218},[58,431,433,435,437],{"class":60,"line":432},16,[58,434,306],{"class":218},[58,436,345],{"class":222},[58,438,225],{"class":218},[58,440,442,444,446,448,450,452,454],{"class":60,"line":441},17,[58,443,352],{"class":218},[58,445,355],{"class":222},[58,447,236],{"class":218},[58,449,205],{"class":68},[58,451,242],{"class":218},[58,453,355],{"class":222},[58,455,225],{"class":218},[58,457,459,461,463,465,468,470,472],{"class":60,"line":458},18,[58,460,352],{"class":218},[58,462,355],{"class":222},[58,464,236],{"class":218},[58,466,467],{"class":68},"push",[58,469,242],{"class":218},[58,471,355],{"class":222},[58,473,225],{"class":218},[58,475,477,479,481],{"class":60,"line":476},19,[58,478,371],{"class":218},[58,480,345],{"class":222},[58,482,225],{"class":218},[58,484,486,488,491],{"class":60,"line":485},20,[58,487,306],{"class":218},[58,489,490],{"class":222},"configuration",[58,492,225],{"class":218},[58,494,496,498,500,502,505,507,509],{"class":60,"line":495},21,[58,497,352],{"class":218},[58,499,205],{"class":222},[58,501,236],{"class":218},[58,503,504],{"class":68},"${project.version}",[58,506,242],{"class":218},[58,508,205],{"class":222},[58,510,225],{"class":218},[58,512,514,516,518],{"class":60,"line":513},22,[58,515,371],{"class":218},[58,517,490],{"class":222},[58,519,225],{"class":218},[58,521,523,525,527],{"class":60,"line":522},23,[58,524,380],{"class":218},[58,526,299],{"class":222},[58,528,225],{"class":218},[58,530,532,534,536],{"class":60,"line":531},24,[58,533,296],{"class":218},[58,535,299],{"class":222},[58,537,225],{"class":218},[58,539,541,543,545,547,550,552,554],{"class":60,"line":540},25,[58,542,306],{"class":218},[58,544,309],{"class":222},[58,546,236],{"class":218},[58,548,549],{"class":68},"tag-image-latest",[58,551,242],{"class":218},[58,553,309],{"class":222},[58,555,225],{"class":218},[58,557,559,561,563,565,567,569,571],{"class":60,"line":558},26,[58,560,306],{"class":218},[58,562,327],{"class":222},[58,564,236],{"class":218},[58,566,423],{"class":68},[58,568,242],{"class":218},[58,570,327],{"class":222},[58,572,225],{"class":218},[58,574,576,578,580],{"class":60,"line":575},27,[58,577,306],{"class":218},[58,579,345],{"class":222},[58,581,225],{"class":218},[58,583,585,587,589,591,593,595,597],{"class":60,"line":584},28,[58,586,352],{"class":218},[58,588,355],{"class":222},[58,590,236],{"class":218},[58,592,205],{"class":68},[58,594,242],{"class":218},[58,596,355],{"class":222},[58,598,225],{"class":218},[58,600,602,604,606,608,610,612,614],{"class":60,"line":601},29,[58,603,352],{"class":218},[58,605,355],{"class":222},[58,607,236],{"class":218},[58,609,467],{"class":68},[58,611,242],{"class":218},[58,613,355],{"class":222},[58,615,225],{"class":218},[58,617,619,621,623],{"class":60,"line":618},30,[58,620,371],{"class":218},[58,622,345],{"class":222},[58,624,225],{"class":218},[58,626,628,630,632],{"class":60,"line":627},31,[58,629,306],{"class":218},[58,631,490],{"class":222},[58,633,225],{"class":218},[58,635,637,639,641,643,645,647,649],{"class":60,"line":636},32,[58,638,352],{"class":218},[58,640,205],{"class":222},[58,642,236],{"class":218},[58,644,201],{"class":68},[58,646,242],{"class":218},[58,648,205],{"class":222},[58,650,225],{"class":218},[58,652,654,656,658],{"class":60,"line":653},33,[58,655,371],{"class":218},[58,657,490],{"class":222},[58,659,225],{"class":218},[58,661,663,665,667],{"class":60,"line":662},34,[58,664,380],{"class":218},[58,666,299],{"class":222},[58,668,225],{"class":218},[58,670,672,675,677],{"class":60,"line":671},35,[58,673,674],{"class":218},"    \u003C\u002F",[58,676,289],{"class":222},[58,678,225],{"class":218},[58,680,682,684,686],{"class":60,"line":681},36,[58,683,230],{"class":218},[58,685,490],{"class":222},[58,687,225],{"class":218},[58,689,691,693,696,698,701,703,705],{"class":60,"line":690},37,[58,692,296],{"class":218},[58,694,695],{"class":222},"repository",[58,697,236],{"class":218},[58,699,700],{"class":68},"registry.cn-hangzhou.aliyuncs.com\u002Fxxx\u002F${project.artifactId}",[58,702,242],{"class":218},[58,704,695],{"class":222},[58,706,225],{"class":218},[58,708,710,712,714,716,718,720,722],{"class":60,"line":709},38,[58,711,296],{"class":218},[58,713,205],{"class":222},[58,715,236],{"class":218},[58,717,504],{"class":68},[58,719,242],{"class":218},[58,721,205],{"class":222},[58,723,225],{"class":218},[58,725,727,729,732,734,737,739,741],{"class":60,"line":726},39,[58,728,296],{"class":218},[58,730,731],{"class":222},"useMavenSettingsForAuth",[58,733,236],{"class":218},[58,735,736],{"class":68},"true",[58,738,242],{"class":218},[58,740,731],{"class":222},[58,742,225],{"class":218},[58,744,746,748,751],{"class":60,"line":745},40,[58,747,296],{"class":218},[58,749,750],{"class":222},"buildArgs",[58,752,225],{"class":218},[58,754,756,758,761,763,766,768,770],{"class":60,"line":755},41,[58,757,306],{"class":218},[58,759,760],{"class":222},"JAR_FILE",[58,762,236],{"class":218},[58,764,765],{"class":68},"target\u002F${project.build.finalName}.jar",[58,767,242],{"class":218},[58,769,760],{"class":222},[58,771,225],{"class":218},[58,773,775,777,779],{"class":60,"line":774},42,[58,776,380],{"class":218},[58,778,750],{"class":222},[58,780,225],{"class":218},[58,782,784,786,788],{"class":60,"line":783},43,[58,785,674],{"class":218},[58,787,490],{"class":222},[58,789,225],{"class":218},[58,791,793,795,797],{"class":60,"line":792},44,[58,794,242],{"class":218},[58,796,197],{"class":222},[58,798,225],{"class":218},[27,800,801,802,805],{},"想要直接用",[55,803,804],{},"mvn deploy","完成整个部署的话，还需要加一下 Nexus 的发布配置",[48,807,809],{"className":209,"code":808,"language":211,"meta":53,"style":53},"\u003CdistributionManagement>\n    \u003Crepository>\n        \u003Cid>monkey-run-maven-release\u003C\u002Fid>\n        \u003Cname>MonkeyRun Maven Release Repository\u003C\u002Fname>\n        \u003Curl>你的nexus仓库地址\u003C\u002Furl>\n    \u003C\u002Frepository>\n\u003C\u002FdistributionManagement>\n",[55,810,811,820,828,845,863,881,889],{"__ignoreMap":53},[58,812,813,815,818],{"class":60,"line":61},[58,814,219],{"class":218},[58,816,817],{"class":222},"distributionManagement",[58,819,225],{"class":218},[58,821,822,824,826],{"class":60,"line":72},[58,823,230],{"class":218},[58,825,695],{"class":222},[58,827,225],{"class":218},[58,829,830,832,834,836,839,841,843],{"class":60,"line":79},[58,831,296],{"class":218},[58,833,309],{"class":222},[58,835,236],{"class":218},[58,837,838],{"class":68},"monkey-run-maven-release",[58,840,242],{"class":218},[58,842,309],{"class":222},[58,844,225],{"class":218},[58,846,847,849,852,854,857,859,861],{"class":60,"line":88},[58,848,296],{"class":218},[58,850,851],{"class":222},"name",[58,853,236],{"class":218},[58,855,856],{"class":68},"MonkeyRun Maven Release Repository",[58,858,242],{"class":218},[58,860,851],{"class":222},[58,862,225],{"class":218},[58,864,865,867,870,872,875,877,879],{"class":60,"line":93},[58,866,296],{"class":218},[58,868,869],{"class":222},"url",[58,871,236],{"class":218},[58,873,874],{"class":68},"你的nexus仓库地址",[58,876,242],{"class":218},[58,878,869],{"class":222},[58,880,225],{"class":218},[58,882,883,885,887],{"class":60,"line":102},[58,884,674],{"class":218},[58,886,695],{"class":222},[58,888,225],{"class":218},[58,890,891,893,895],{"class":60,"line":107},[58,892,242],{"class":218},[58,894,817],{"class":222},[58,896,225],{"class":218},[27,898,899,900,902],{},"阿里云容器上配置好镜像更新重新部署的触发器，之后就是直接",[55,901,804],{},"等编译好上传完就发布完成啦！",[904,905,906],"style",{},"html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sQzsp, html code.shiki .sQzsp{--shiki-light:#E53935;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sw1J6, html code.shiki .sw1J6{--shiki-light:#F76D47;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":53,"searchDepth":72,"depth":72,"links":908},[],null,"2018-04-12","Docker 用了很久了，之前 Maven 项目一直用的docker-maven-plugin，但是作者目前已经不推荐使用这种方式了，该项目已经不再更新功能，只提供 bugfix。他们的新项目叫做dockerfile-maven，配置上有些不同，之前一直没时间去更新，最近的一个项目中，采用了最新的插件，中间也踩过不少坑，刚刚终于都搞定了，记录一下。",false,"md",{},"\u002Fposts\u002F2018\u002Fdockerfile-maven",{"text":917,"minutes":918,"time":919,"words":920},"2 min read",1.81,108600,362,{"title":22,"description":911},{"loc":915},"posts\u002F2018\u002F20180412.dockerfile-maven",[925,926,927],"技术","Docker","DevOps","天气小雨🌦","cvFl_OQs7LBBHpi45-gE5m-7kKeSxsJyCWuH8fPZRM8",[931,937],{"title":932,"path":933,"stem":934,"date":935,"description":936,"children":-1},"前端跨项目组件化及基于 Docker 的快速部署方案","\u002Fposts\u002F2018\u002Ffrontend-components-and-docker-deploy","posts\u002F2018\u002F20180414.frontend-components-and-docker-deploy","2018-04-14","最近静下心来写了几个项目，花了些时间重新整理了整套组件化方案和部署方案，记录一下。",{"title":938,"path":939,"stem":940,"date":941,"description":942,"children":-1},"日记 - 20180407","\u002Fposts\u002F2018\u002Fdiary-20180407","posts\u002F2018\u002F20180407.diary-20180407","2018-04-07","凌晨 2 点 18 分，我爸来电。",1777579145470]