Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Docker ÈÝÆ÷²âÊÔȫ̽Ë÷
 
À´Ô´£ºyq.aliyun.com ·¢²¼ÓÚ£º 2017-6-16
  2728  次浏览      29
 

ÕªÒª£º µ±ÎÒÃǹ¹½¨ºÃDocker¾µÏñ²¢ÀûÓöàÌ×ÈÝÆ÷¹²Í¬×éºÏ³ÉÓ¦ÓóÌÐò£¬½¨Á¢Æð³ÖÐø½»¸¶Í¨µÀ£¬Á˽âÁËÈçºÎ½«Ð´´½¨µÄ¾µÏñÄÉÈëµ½Éú²ú»òÕß²âÊÔ»·¾³µ±ÖÐÖ®ºó£¬ÐµÄÎÊÌâÀ´ÁË¡ª¡ªÎÒÃǸÃÈçºÎ²âÊÔ×Ô¼ºµÄDockerÈÝÆ÷£¿ ²âÊԵIJßÂÔ¶àÖÖ¶àÑù£¬·´Ó³Á˸÷ÖÖ¸÷ÑùµÄ²âÊÔÐÔ¸ñ£ºÌìÕæÐÍ£¬ÀÁÈËÊ¡ÊÂÐÍ£¬³¬Ç°ÀíÏëÖ÷ÒåÐÍ£¬ÍêÃÀÖ÷Ò崦Ů×ùÐÍ¡­¡­ÄÇôÄãÊÇÄÄÒ»ÐÍ£¿ ÏÂÃæÎÒÃÇ¾Í¶ÔÆä¸÷×Եķ½°¸Àû±×½øÐÐÖðÒ»·ÖÎö¡£

µ±ÎÒÃǹ¹½¨ºÃDocker¾µÏñ²¢ÀûÓöàÌ×ÈÝÆ÷¹²Í¬×éºÏ³ÉÓ¦ÓóÌÐò£¬½¨Á¢Æð³ÖÐø½»¸¶Í¨µÀ£¬Á˽âÁËÈçºÎ½«Ð´´½¨µÄ¾µÏñÄÉÈëµ½Éú²ú»òÕß²âÊÔ»·¾³µ±ÖÐÖ®ºó£¬ÐµÄÎÊÌâÀ´ÁË¡ª¡ªÎÒÃǸÃÈçºÎ²âÊÔ×Ô¼ºµÄDockerÈÝÆ÷£¿

²âÊԵIJßÂÔ¶àÖÖ¶àÑù£¬·´Ó³Á˸÷ÖÖ¸÷ÑùµÄ²âÊÔÐÔ¸ñ£ºÌìÕæÐÍ£¬ÀÁÈËÊ¡ÊÂÐÍ£¬³¬Ç°ÀíÏëÖ÷ÒåÐÍ£¬ÍêÃÀÖ÷Ò崦Ů×ùÐÍ¡­¡­ÄÇôÄãÊÇÄÄÒ»ÐÍ£¿

ÏÂÃæÎÒÃÇ¾Í¶ÔÆä¸÷×Եķ½°¸Àû±×½øÐÐÖðÒ»·ÖÎö¡£

¡°ÌìÕæ¡±ÐÍ·½°¸

´ó¶àÊýÈ˻Ὣ´Ë×÷ΪĬÈÏ·½°¸¡£ÆäÀûÓÃCI·þÎñÆ÷ʵÏÖÈÎÎñÖ´ÐС£ÔÚÕâÏî·½°¸ÖУ¬¿ª·¢ÈËÔ±ÀûÓÃDocker×÷ΪÈí¼þ°ü¹ÜÀíÆ÷£¬Æäʵ¼ÊЧ¹ûÓÅÓÚjar/rpm/deb·½°¸¡£CI·þÎñÆ÷¶ÔÓ¦ÓóÌÐò´úÂë½øÐбàÒ룬¶øºóÖ´ÐвâÊÔ£¨°üÀ¨µ¥Ôª¡¢·þÎñ¼°¹¦Äܵȣ©¡£DockerÖеÄbuild¿É¸´ÓÃÒÔÉú³ÉеľµÏñ£¬ÓÉ´ËÉú³ÉµÄ¾µÏñ²»½ö°üº¬Ó¦ÓóÌÐòµÄ¡°¶þ½øÖÆ´úÂ롱£¬Í¬Ê±ÒàÓµÓÐÔËÐÐʱËù±ØÐèµÄÒÀÀµÐÔ¼°ÅäÖá£

²»¹ýΪÁËʵÏÖÓ¦ÓóÌÐòµÄ¿ÉÒÆÖ²ÐÔ£¬ÎÒÃÇÐèÒª·ÅÆú¿ª·¢Óë²âÊԵĿÉÒÆÖ²ÄÜÁ¦¡£ÔÚÕâÖÖÇé¿öÏ£¬ÎÒÃÇÎÞ·¨ÔÚCIÖ®ÍâÖØÐ½¨Á¢Í¬ÑùµÄ¿ª·¢Óë²âÊÔ»·¾³¡£ÎªÁË´´Ê¼ÕâÑùÒ»Ì×еIJâÊÔ»·¾³£¬ÎÒÃÇÐèÒªÉèÖòâÊÔ¹¤¾ß£¨ÕýÈ·°æ±¾Óë²å¼þ£©¡¢ÅäÖÃÔËÐÐʱÓë²Ù×÷ϵͳÉ趨£¬Í¬Ê±»ñÈ¡Ïàͬ°æ±¾µÄ²âÊԽű¾Óë²âÊÔÊý¾Ý¡£

ΪÁ˽â¾öÉÏÊöÄÑÌ⣬ÎÒÃÇÐèÒª¿¼ÂÇÒÔÏ·½°¸¡£

Ó¦ÓÃ&²âÊÔÈÝÆ÷·½°¸

ÏÖÔÚÎÒÃdz¢ÊÔ´´½¨µ¥Ò»À¦°ó°ü£¬ÆäÖÐÓ¦ÓóÌÐò¡°¶þ½øÖÆ´úÂ롱Öаüº¬È«²¿±ØÐèµÄÈí¼þ°ü¡¢²âÊÔ¹¤¾ß£¨°üÀ¨¶ÔÓ¦°æ±¾£©¡¢²âÊÔ¹¤¾ß²å¼þ¡¢²âÊԽű¾ÒÔ¼°ÆäËü¸÷Àà²âÊÔ»·¾³ÔªËØ¡£

ÕâÌ×·½°¸µÄÓÅÊÆ°üÀ¨£º

²âÊÔ»·¾³×ÔÉíÓµÓпÉÖØ¸´ÐÔ¡ª¡ªÎÒÃÇÄܹ»ÔÚCI¡¢¿ª·¢¡¢·Ö¶Î»òÕßÉú²ú»·¾³µ±ÖÐʹÓÃÍêÈ«ÏàͬµÄ²âÊÔ¹¤¾ßʵÏÖÍêÈ«ÏàͬµÄ²âÊÔЧ¹û¡£

ÎÒÃÇÄܹ»Á¢×ãÌØ¶¨Ê±¼äµã²¶×½²âÊԽű¾£¬ËùÒԿɽ«Æä¸´ÓÃÓÚÈÎÒâ»·¾³¡£

ÎÒÃDz»ÐèÒª¶Ô²âÊÔ¹¤¾ß½øÐжþ´ÎÉèÖÃÓëÅäÖ᪡ªÆäÒѾ­³ÉΪ¾µÏñÖеÄ×é³É²¿·Ö¡£

µ«ÕâÖÖ·½Ê½Ò²´æÔÚ×ÅÏÔÖø±×¶Ë£º

¾µÏñÌå»ýÖ±ÏßÔö³¤¡ª¡ªÕâÊÇÒòΪÆäÖаüº¬ÓвâÊÔ¹¤¾ß¡¢±ØÒªÈí¼þ°ü¡¢²âÊԽű¾ÉõÖÁÊDzâÊÔÊý¾Ý¡£

ÌØ¶¨²âÊÔÅäÖÿÉÄܶԾµÏñÔËÐÐʱ»·¾³Ôì³ÉÎÛȾ£¬ÉõÖÁÒýÈë²»±ØÒªµÄÒÀÀµÐÔ£¨¼¯³É²âÊÔÖÐÐèÒªÓõ½£©¡£

ÎÒÃÇ»¹ÐèÒª¿¼ÂÇÈçºÎ´¦Àí²âÊÔ½á¹ûÓë¼Ç¼ÈÕÖ¾£»ÈçºÎ½«Æäµ¼³öÒÔ¼°ÏòÄÄÀïµ¼³ö¡£ ͨ¹ýÒÔϾ­¹ý¼ò»¯µÄ Dockerfile£¬ÎÒÃÇ¿ÉÒÔÁ˽âÉÏÊö·½°¸µÄÕû¸öÁ÷³Ì¡£

FROM "<bases image>":"<version>"
WORKDIR "<path>"
# install packages required to run app and tests
RUN apt-get update && apt-get install -y \
"<app runtime> and <dependencies>" \ # add app runtime and required packages
"<test tools> and <dependencies>" \ # add testing tools and required packages
&& rm -rf /var/lib/apt/lists/*
# copy app files
COPY app app
COPY run.sh run.sh
# copy test scripts
COPY tests tests
# copy "main" test command
COPY test.sh test.sh
# ... EXPOSE, RUN, ADD ... for app and test environment
# main app command
CMD [run.sh, "<app arguments>"]
# it's not possible to have multiple CMD commands, but this is the "main" test command
# CMD [/test.sh, "<test arguments>"]

ºÁÎÞÒÉÎÊ£¬Ó¦¸ÃÓиüºÃµÄÈÝÆ÷ÄÚ²âÊÔ·½°¸¿É¹©Ñ¡Ôñ¡£

²âÊÔ¸ÐÖªÐÍÈÝÆ÷·½°¸

Ŀǰ£¬Docker³ÐŵÒÔ¡°Build -> Ship -> Run¡±ÕâÒ»¼òµ¥²Ù×÷Íê³É¾µÏñ¹¹½¨¡¢·¢²¼ÖÁ×¢²á±í²¢ÔÚÆäËüλÖÃÔËÐеÈÈÎÎñ¡£²»¹ýË¡ÎÒÖ±ÑÔ£¬ÆäÖл¹È±ÉÙÁËTestÕâÒ»ÖØÒª»·½Ú¡£ÕýÈ·ÇÒÍêÕûµÄÁ÷³ÌÓ¦¸ÃÊÇBuild -> Test -> Ship -> Run¡£ ? ÏÂÃæÈÃÎÒÃÇ¿´¿´Äܹ»ÎªDockerÃüÁîÌṩ¡°²âÊÔÓѺá±ÐÍÓï·¨ÓëÀ©Õ¹µÄDockerfileÊÇÈçºÎ½¨Á¢¶ø³ÉµÄ¡£µ±È»£¬ÆäÖв¢²»Éæ¼°ÕæÕýµÄÓï·¨£¬Ö»ÊÇÎÒ¸öÈ˸üÆ«ºÃÕâÑù±íÊö¡£ÎÒ¶¨Òå³öÁË×Ô¼ºµÄ¡°ÀíÏ롱°æ±¾£¨ÕæµÄÖ»ÊÇÀíÏë°æ±¾£¬½ö¹©´ó¼Ò½è¼øÆäÖеÄ˼Ï룬СÊý×¢£©£¬´ó¼ÒÓ¦¸ÃÄܹ»¿´³öÆäÖпÉÓÃÓÚʵ¼ùµÄÖ¸µ¼Ë¼Â·¡£

ONTEST [INSTRUCTION]

Ê×Ïȶ¨ÒåÒ»ÌõÌØÊâµÄONTESTÖ¸ÁÆäÓëÏÖÓÐONBUILDÖ¸Áî·Ç³£ÏàËÆ¡£ONTESTÖ¸Áî»áÏò¾µÏñÌí¼ÓÒ»Ìõ´¥·¢Ö¸ÁÆäÔÚËæºó¾µÏñ½ÓÊܲâÊÔʱ×Ô¶¯Ö´ÐС£ÈÎÒâbuildÖ¸Áî¶¼¿É±»×¢²áΪ´¥·¢Ìõ¼þ¡£

ONTESTÖ¸Áî¿ÉÓÉÒ»ÌõеÄdocker testÃüÁî½øÐÐʶ±ð¡£

docker test [OPTIONS] IMAGE [COMMAND] [ARG...]

ÊÂʵÉÏ£¬docker testÃüÁîµÄÓï·¨Óëdocker runÃüÁî·Ç³£ÏàËÆ£¬¶þÕßÖ»´æÔÚÒ»ÏîÇø±ð£ºÇ°Õß»á×Ô¶¯Éú³ÉÒ»Ì×еġ°¿É²âÊÔ¡±¾µÏñ£¬ÉõÖÁΪÆäÌṩ:-test ±êÇ©£¨Ïòԭʼ¾µÏñ±êÇ©ÖÐÌí¼Ó¡®test¡¯±êÇ©£©¡£´Ë¿É²âÊÔ¾µÏñ½«ÓɳõʼӦÓþµÏñÉú³É£¬Ö´ÐÐÈ«²¿build²Ù×÷£¬ÓÚONTESTÃüÁîºó½øÐж¨Òå²¢Ö´ÐÐONTEST CMD£¨»òÕßONTEST ENTRYPOINT£©¡£ÆäÖÐÈô²âÊÔ·¢Éú´íÎó£¬docker testÃüÁîÓ¦µ±·µ»ØÒ»¶Î·ÇÁã´úÂë¡£´Ë²âÊÔ½á¹ûÓ¦µ±±»Ð´ÈëÖÁ×Ô¶¯Éú³ÉÇÒÖ¸Ïò/var/tests/resultsÎļþ¼ÐµÄVOLUME¡£

ÏÂÃæÎÒÃÇÀ´¿´¿´¾­¹ýÐ޸ĵÄDockerfile¡ª¡ªÆäÖаüº¬ÐµÄONTESTÖ¸Áî¡£

FROM "<base image>":"<version>"
WORKDIR "<path>"
# install packages required to run app
RUN apt-get update && apt-get install -y \
"<app runtime> and <dependencies>" \ # add app runtime and required packages
&& rm -rf /var/lib/apt/lists/*
# install packages required to run tests
ONTEST RUN apt-get update && apt-get install -y \
"<test tools> and <dependencies>" \ # add testing tools and required packages
&& rm -rf /var/lib/apt/lists/*
# copy app files
COPY app app
COPY run.sh run.sh
# copy test scripts
ONTEST COPY tests tests
# copy "main" test command
ONTEST COPY test.sh test.sh
# auto-generated volume for test results
# ONTEST VOLUME "/var/tests/results"
# ... EXPOSE, RUN, ADD ... for app and test environment
# main app command
CMD [run.sh, "<app arguments>"]
# main test command
ONTEST CMD [/test.sh, "<test arguments>"]

ÈçºÎʵÏÖ¡°²âÊÔ¸ÐÖªÈÝÆ÷¡±

ÎÒÃÇÏàÐÅ£¬DockerÓ¦¸Ã»á½«docker-test×÷ΪÈÝÆ÷¹ÜÀíÉúÃüÖÜÆÚÖеÄ×é³É²¿·Ö¡£µ±ÏÂÎÒÃǶ¼ÐèÒª¸üΪ¼ò±ãµÄ½â¾ö·½°¸£¬Òò´ËÎÒÔÚÕâÀïÌá³öÒ»Ì×½Ó½üÓÚÀíÏëÇé¿öµÄʵÏÖ°ì·¨¡£

Èç֮ǰËùÌáµ½£¬DockerÓµÓÐONBUILDÕâÑùÒ»Ìõ·Ç³£ÊµÓõÄÖ¸Áî¡£¸ÃÖ¸ÁîÔÊÐíÎÒÃÇÔÚÒѾ­³É¹¦µÄbuildÖ®ÉÏ´¥·¢ÁíÒ»buildÖ¸Áî¡£Æä»ù±¾Ë¼Â·ÊÇÔÚÔËÐÐdocker-testÃüÁîµÄͬʱ£¬Ê¹ÓÃONBUILDÖ¸Áî¡£

ÒÔÏÂΪdocker-testÃüÁîµÄÖ´ÐÐÁ÷³Ì:

docker-test½«ÔÚÓ¦ÓóÌÐòDockerfileµ±ÖÐËÑË÷ONBUILDÖ¸Á¶øºó¡­¡­

ÀûÓóõʼDockerfileÉú³ÉÒ»ÌõÁÙʱµÄDockerfile.test

Ö´ÐÐdocker build -f Dockerfile.test [OPTIONS] PATH£¬ÆäÖаüº¬ÊÜdocker buildÃüÁîÖ§³ÖµÄÆäËüÑ¡Ï-test½«×Ô¶¯±»Ìí¼ÓÖÁtagÑ¡Ïîµ±ÖС£

Èç¹û¹¹½¨³É¹¦£¬ÔòÖ´ÐÐ docker run -v ./tests/results:/var/tests/results [OPTIONS] IMAGE:TAG-test [COMMAND] [ARG...]

ÒÆ³ýDockerfile.testÎļþ

ÄÇô£¬ÎªÊ²Ã´²»´´½¨Ò»¸öÎÞÐèÅäºÏONBUILDÖ¸ÁîµÄDockerfile.testÎļþ£¿

ÕâÊÇÒòΪ£¬ÎªÁ˲âÊÔÕýÈ·µÄ¾µÏñ£¨¼°±êÇ©£©£¬ÎÒÃÇÐèÒª±£Ö¤FROMʼÖÕÔÚ²âÊÔÄ¿±êµÄimage:tagÖеõ½¸üС£

²»¹ýÇ°ÃæÌáµ½µÄ·½°¸ÈÔÈ»´æÔÚ¾ÖÏÞ¡ª¡ªÆä²»ÊÊÓÃÓÚ¡°onbuild¡±¾µÏñ£¨¼´ÓÃÓÚ×Ô¶¯»¯¹¹½¨Ó¦ÓõľµÏñ£©£¬ÀýÈçMaven:onbuild¡£

ÏÂÃæÀ´¿´Ò»Ìõ¼òµ¥µÄdocker-testÃüÁîʵÏÖÁ÷³Ì¡£ÆäÖÐÇ¿µ÷ÁËÒ»´óÖØÒª¸ÅÄdocker-testÃüÁîÓ¦µ±Äܹ»´¦ÀíbuildÓërunÃüÁîÑ¡ÏͬʱÄܹ»Í×ÉÆ´¦Àí´íÎó×´¿ö¡£

#!/bin/bash
image="app"
tag="latest"
echo "FROM ${image}:${tag}" > Dockerfile.test &&
docker build -t "${image}:${tag}-test" -f Dockerfile.test . &&
docker run -it --rm -v $(pwd)/tests/results:/var/tests/results "${image}:${tag}-test" &&
rm Dockerfile.test

ÈÃÎÒÃǰÑ×¢ÒâÁ¦¼¯ÖÐÔÚ×îÖµµÃ¹Ø×¢µÄÖØÒª²¿·Ö¡£

¼¯³É²âÊÔÐÍÈÝÆ÷·½°¸

¼ÙÉèÎÒÃǵÄÓ¦ÓóÌÐòÓÉÊýÊ®ÉõÖÁÊý°ÙÏî΢·þÎñ¹¹½¨¶ø³É£¬Í¬Ê±¼ÙÉèÎÒÃÇÒѾ­ÓµÓÐÒ»Ì××Ô¶¯»¯CI/CDͨµÀ£¬ÆäÖÐÿÏî΢·þÎñ¶¼ÓÉCI½øÐй¹½¨Óë²âÊÔ£¬²¢ÔÚÖ®ºó±»²¿Êðµ½Ä³ÖÖ»·¾³µ±ÖУ¨ÀýÈç²âÊÔ¡¢·Ö¶Î»òÕßÉú²ú»·¾³£©¡£ÌýÆðÀ´²»´í£¬¶Ô°É£¿ÎÒÃǵÄCI»á¶Ô¸÷Ïî΢·þÎñ½øÐзֱð²âÊÔ¡ª¡ªÔËÐе¥ÔªÓë·þÎñ²âÊÔ£¨»òÕßAPIºÏͬ²âÊÔ£©¡£ÉõÖÁÓпÉÄܽøÐÐ΢¼¯³É²âÊÔ¡ª¡ª¼´½«²âÊÔÔËÐÐÔÚÌØÉèµÄ×Óϵͳ֮ÉÏ£¨ÀýÈçʹÓÃdocker compose£©¡£

µ«ÕâÓÖ»á´øÀ´Ò»Ð©ÐÂÎÊÌ⣺

? ʵ¼Ê¼¯³É²âÊÔ»òÕß³¤ÆÚÔËÐвâÊÔ¸ÃÈçºÎÍê³É£¨ÀýÈçÐÔÄÜÓëѹÁ¦²âÊÔ£©£¿ ? µ¯ÐÔ²âÊÔ¸ÃÈçºÎʵÏÖ£¨ÀýÈç¡®»ìÂÒºï×Ó¡¯²âÊÔ£©£¿ ? ÈçºÎʵÏÖ°²È«É¨Ã裿 ? ÄÇЩÐèÒªºÄ·Ñ½Ï³¤Ê±¼äÇÒÔËÐÐÔÚÍêÕû²Ù×÷ϵͳ֮ÉϵIJâÊÔÓëɨÃèÒªÈçºÎÍê³É£¿

Ó¦¸ÃÓÐÒ»ÖÖ¸üºÃµÄ°ì·¨À´Ìæ´úÕâÖÖÖ±½Ó½«ÐµÄ΢·þÎñ°æ±¾½»¸¶ÖÁÉú²ú»·¾³µÄ×÷·¨£¬ÎÒÃÇÒ²ÐèÒª¸üΪÃÜÇÐµÄ¼à¿ØÊֶΡ£

Ó¦µ±´æÔÚÒ»ÀàÌØÊâµÄ¼¯³É²âÊÔÈÝÆ÷¡£ÕâЩÈÝÆ÷½«½ö°üº¬²âÊÔ¹¤¾ßÓë²âÊÔÔªËØ£º²âÊԽű¾¡¢²âÊÔÊý¾Ý¡¢²âÊÔ»·¾³ÅäÖõȵȡ£ÎªÁ˼ò»¯´ËÀàÈÝÆ÷µÄ±àÅÅÓë×Ô¶¯»¯Á÷³Ì£¬ÎÒÃÇÓ¦µ±¶¨Òå²¢×ñѭijЩԼ¶¨²¢Ê¹ÓÃÔªÊý¾Ý±êÇ©£¨DockerfileÖеÄLABELÖ¸Á¡£

¼¯³É²âÊÔ±êÇ©

test.type ¨C ²âÊÔÀàÐÍ£¬¸ºÔð¶¨Òåintegration; ¿ÉÊôÓÚ integration, performance, security, chaos »òÕ߯äËüÈÎÒâÎı¾Ö®Ò»; ´Ë±êÇ©´ú±íÆäÊôÓÚÒ»Ì×¼¯³É²âÊÔÈÝÆ÷

test.results ¨C ÓÃÓÚ´æ·Å²âÊÔ½á¹ûµÄVOLUME ; ĬÈÏλÖÃΪ /var/tests/results

test.XXX -ÈÎºÎÆäËüÏà¹ØÔªÊý¾Ý£¬½öʹÓÃtest.ºó׺Ãû×÷Ϊ±êÇ©Ãû³Æ

¼¯³É²âÊÔÈÝÆ÷

¼¯³É²âÊÔÈÝÆ÷Æäʵ¾ÍÊÇÒ»ÖÖ³£¹æDockerÈÝÆ÷£¬ÆäÖв»°üº¬ÈκÎÓ¦ÓóÌÐòÂß¼­¼°´úÂë¡£ËüµÄΩһÓÃ;¾ÍÊÇ´´½¨¿ÉÖØ¸´ÇÒ¿ÉÒÆÖ²µÄ²âÊÔÁ÷³Ì¡£ÒÔÏÂΪ½¨ÒéÄÉÈ뼯³É²âÊÔÈÝÆ÷µÄÄÚÈÝ£º

²âÊÔ¹¤¾ß - Phantom.js, Selenium, Chakram, Gatling, ¡­

²âÊÔ¹¤¾ßÔËÐÐʱ - Node.js, JVM, Python, Ruby, ¡­

²âÊÔ¹ÜÀíÅäÖà ¨C »·¾³±äÁ¿, ÅäÖÃÎļþ, Òýµ¼½Å±¾, ¡­

²âÊÔ -×÷Ϊ¾­¹ý±àÒëµÄÈí¼þ°ü»òÕ߽ű¾Îļþ´æÔÚ

²âÊÔÊý¾Ý ¨C ÈκÎÓÃÓÚ²âÊÔµÄÊý¾ÝÎļþÀàÐÍ: json, csv, txt, xml, ¡­

²âÊÔÆô¶¯½Å±¾ -ÓÃÓÚÔËÐвâÊԵIJ¿·Ö¡°main¡±Æô¶¯½Å±¾£¬½ö¸ºÔð´´½¨test.sh²¢½è´ËÆô¶¯¸Ã²âÊÔ¹¤¾ß¡£

¼¯³É²âÊÔÈÝÆ÷Ó¦µ±ÔËÐÐÔÚÈ«²¿Î¢·þÎñ¶¼ÒѾ­²¿Êðµ½Î»µÄÔËÓª»·¾³Ö®Ï£¬°üÀ¨²âÊÔ¡¢·Ö¶Î»òÕßÉú²ú»·¾³¡£ÕâЩÈÝÆ÷¿ÉÓëÆäËü·þÎñ²ÉÈ¡ÍêȫһÖµIJ¿Êð·½Ê½¡£ÆäÀûÓÃͬÑùµÄÍøÂç²ã£¬Òò´ËÄܹ»·ÃÎʶàÏîÆäËü·þÎñ£»Ê¹ÓÃÑ¡¶¨µÄ·þÎñ·¢ÏÖ·½·¨£¨Í¨³£ÎªDNS£©¡£ÔÚʵ¼Ê¼¯³É²âÊÔµ±ÖУ¬ÎÒÃDZØÐë¶Ô¶àÏî·þÎñ½øÐзÃÎÊ¡ª¡ªÖ¼ÔÚÄ£Äâ²¢ÑéÖ¤×ÔÉíϵͳÊÇ·ñÄܹ»ÔÚ¶àÖÖ²»Í¬»·¾³ÏÂÕý³£ÔËÐС£½«¼¯³É²âÊÔÄÉÈëÓ¦Ó÷þÎñÈÝÆ÷²»½ö»áÔö¼ÓÈÝÆ÷×ÔÉíÌå»ý£¬Í¬Ê±Òà»áÔÚ¸÷·þÎñÖ®¼ä´øÀ´²»±ØÒªµÄÒÀÀµÐÔ¡£Òò´Ë£¬ÎÒÃǽ«ËùÓÐÒÀÀµÐÔ¶¼ÏÞÖÆÔÚ¼¯³É²âÊÔÈÝÆ÷µ±ÖС£Ò»µ©²âÊÔ£¨ÒÔ¼°Ïà¹Ø²âÊÔ¹¤¾ß£©±»´ò°üÔÚ¸ÃÈÝÆ÷ÄÚ£¬ÎÒÃÇÒà¿ÉÔÚ°üÀ¨¿ª·¢ÕßÉ豸ÔÚÄÚµÄÈÎÒâ»·¾³ÏÂÖØ¸´ÔËÐÐͬÑùµÄ²âÊÔÁ÷³Ì¡£´ó¼Ò»¹Äܹ»ÊµÏֻعö£¬¼´¸ù¾ÝÐèÒªÔËÐÐÈÎÒ⼯³É²âÊÔÈÝÆ÷°æ±¾¡£

   
2728 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤