×ðÁú¿­Ê±

ÔõÑùʹÓÃDocker¾ÙÐÐÒ»Á¬¼¯³ÉºÍÒ»Á¬°²ÅÅ

ÔõÑùʹÓÃDocker¾ÙÐÐÒ»Á¬¼¯³ÉºÍÒ»Á¬°²ÅÅ

Ëæ×ÅÈí¼þ¿ª·¢µÄ¿ìËÙÉú³¤£¬Ò»Á¬¼¯³ÉºÍÒ»Á¬°²ÅųÉΪÁËÏÖ´úÈí¼þ¿ª·¢Á÷³ÌÖв»¿É»òȱµÄÒ»²¿·Ö¡£Docker×÷Ϊһ¸öÈÝÆ÷»¯Æ½Ì¨£¬¿ÉÒÔ¼«´óµØ¼ò»¯Ò»Á¬¼¯³ÉºÍÒ»Á¬°²ÅŵÄÀú³Ì¡£±¾ÎĽ«ÏÈÈÝÔõÑùʹÓÃDocker¾ÙÐÐÒ»Á¬¼¯³ÉºÍÒ»Á¬°²ÅÅ£¬²¢ÌṩÏêϸµÄ´úÂëʾÀý¡£

Ò»¡¢Ò»Á¬¼¯³É

Ò»Á¬¼¯³ÉÊÇÖ¸½«¿ª·¢Ö°Ô±¶Ô´úÂëµÄÐÞ¸ÄƵÈԵغϲ¢µ½¹²Ïí´æ´¢¿âÖУ¬²¢ÆµÈԵؾÙÐй¹½¨ºÍ²âÊÔ¡£Ê¹ÓÃDocker¾ÙÐÐÒ»Á¬¼¯³É¿ÉÒÔ¼ò»¯ÇéÐÎÉèÖú͹¹½¨Àú³Ì£¬Ìá¸ß¿ª·¢Ð§ÂÊ¡£

½¨ÉèDockerfileÎļþ

DockerfileÊÇÓÃÓÚ¹¹½¨Docker¾µÏñµÄ¾ç±¾Îļþ¡£ÔÚÏîÄ¿¸ùĿ¼Ï½¨ÉèÒ»¸öÃûΪDockerfileµÄÎļþ£¬²¢Ìí¼ÓÒÔÏ´úÂëʾÀý£º

# ʹÓùٷ½µÄ Node.js ¾µÏñ×÷Ϊ»ù´¡¾µÏñ
FROM node:alpine

# ÉèÖÃÊÂÇéĿ¼
WORKDIR /app

# ¸´ÖÆ package.json ºÍ package-lock.json µ½ÊÂÇéĿ¼
COPY package*.json ./

# ×°ÖÃÏîÄ¿ÒÀÀµ
RUN npm install

# ½«ÏîÄ¿Îļþ¸´ÖƵ½ÊÂÇéĿ¼
COPY . .

# ̻¶¶Ë¿Ú
EXPOSE 3000

# ÔËÐÐÓ¦ÓÃ
CMD ["npm", "start"]

µÇ¼ºó¸´ÖÆ

Õâ¸öDockerfileÎļþ½ç˵ÁËÒ»¸ö»ùÓÚNode.jsµÄ¾µÏñ£¬²¢½«ÏîÄ¿µÄÒÀÀµ×°Öõ½¾µÏñÖУ¬²¢½«Ó¦ÓõÄÎļþºÍ´úÂ븴ÖƵ½ÊÂÇéĿ¼ÖС£×îºó£¬Ì»Â¶¶Ë¿Ú²¢ÔËÐÐÓ¦Óá£

¹¹½¨Docker¾µÏñ

ÔÚÏîÄ¿¸ùĿ¼Ï£¬Ê¹ÓÃÒÔÏÂÏÂÁî¹¹½¨Docker¾µÏñ£º

docker build -t my-app .

µÇ¼ºó¸´ÖÆ

Õâ¸öÏÂÁî»áƾ֤DockerfileÎļþµÄ½ç˵£¬¹¹½¨Ò»¸öÃûΪmy-appµÄ¾µÏñ¡£

ÈÝÆ÷»¯²âÊÔ

ÔÚÏîÄ¿¸ùĿ¼Ï½¨ÉèÒ»¸öÃûΪdocker-compose.test.ymlµÄÎļþ£¬²¢Ìí¼ÓÒÔÏ´úÂëʾÀý£º

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    depends_on:
      - db
    command: npm run test
  db:
    image: mongo

µÇ¼ºó¸´ÖÆ

Õâ¸ödocker-compose.test.ymlÎļþ½ç˵ÁËÁ½¸öЧÀÍ£¬Ò»¸öÊÇappЧÀͼ´×ðÁú¿­Ê±Ó¦ÓÃЧÀÍ£¬ÁíÒ»¸öÊÇdbЧÀͼ´×ðÁú¿­Ê±Êý¾Ý¿âЧÀÍ¡£Õâ¸öÎļþָʾDockerÔËÐÐÁ½¸öЧÀÍ£¬²¢ÔÚappЧÀÍÖÐÔËÐвâÊÔÏÂÁî¡£

ÔÚÏîÄ¿¸ùĿ¼Ï£¬Ê¹ÓÃÒÔÏÂÏÂÁîÔËÐвâÊÔÈÝÆ÷£º

docker-compose -f docker-compose.test.yml up

µÇ¼ºó¸´ÖÆ

Õâ¸öÏÂÁî»áÆô¶¯appºÍdbÁ½¸öЧÀÍ£¬²¢ÔËÐвâÊÔÏÂÁî¡£

×Ô¶¯»¯Ò»Á¬¼¯³É

Ò»Á¬¼¯³ÉµÄÄ¿µÄÊǽ«¿ª·¢Ö°Ô±µÄ´úÂë±ä»»¿ìËÙ¡¢ÆµÈԵغϲ¢µ½Ö÷¸É´úÂëÖУ¬²¢¾ÙÐÐ×Ô¶¯»¯¹¹½¨ºÍ²âÊÔ¡£¿ÉÒÔʹÓÃÀàËÆJenkins¡¢GitLab CIµÈ¹¤¾ßÀ´ÊµÏÖ×Ô¶¯»¯Ò»Á¬¼¯³É¡£

ÒÔJenkinsΪÀý£¬½¨ÉèÒ»¸öÃûΪJenkinsfileµÄÎļþ£¬²¢Ìí¼ÓÒÔÏ´úÂëʾÀý£º

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                sh 'docker build -t my-app .'
            }
        }
        stage('Test') {
            steps {
                sh 'docker-compose -f docker-compose.test.yml up'
            }
        }
    }
}

µÇ¼ºó¸´ÖÆ

Õâ¸öJenkinsfileÎļþ½ç˵ÁËÒ»¸öJenkinsÁ÷Ë®Ïߣ¬°üÀ¨Á½¸ö½×¶Î£º¹¹½¨ºÍ²âÊÔ¡£ÔÚ¹¹½¨½×¶ÎÖ´ÐÐdocker buildÏÂÁî¹¹½¨Docker¾µÏñ£¬ÔÚ²âÊԽ׶ÎÖ´ÐÐdocker-composeÏÂÁîÆô¶¯²âÊÔÈÝÆ÷¡£

½«JenkinsfileÎļþÌí¼Óµ½ÏîÄ¿µÄ¸ùĿ¼£¬²¢ÉèÖÃJenkinsЧÀÍÆ÷¾ÙÐÐ×Ô¶¯»¯Ò»Á¬¼¯³É¡£

¶þ¡¢Ò»Á¬°²ÅÅ

Ò»Á¬°²ÅÅÊÇÖ¸ÔÚÍê³ÉÒ»Á¬¼¯³Éºó£¬½«´úÂë×Ô¶¯°²Åŵ½Éú²úÇéÐÎÖС£Ê¹ÓÃDocker¾ÙÐÐÒ»Á¬°²ÅÅ¿ÉÒÔ´ó´ó¼ò»¯°²ÅŵÄÀú³Ì¡£

½¨ÉèDocker¾µÏñ

ʹÓÃÇ°ÃæµÄ°ì·¨Öн¨ÉèµÄDockerfileÎļþ£¬¹¹½¨Ò»¸ö°üÀ¨Ó¦ÓóÌÐò´úÂëµÄDocker¾µÏñ¡£

±àдdocker-compose.ymlÎļþ

ÔÚÏîÄ¿¸ùĿ¼Ï½¨ÉèÒ»¸öÃûΪdocker-compose.ymlµÄÎļþ£¬²¢Ìí¼ÓÒÔÏ´úÂëʾÀý£º

version: '3'
services:
  app:
    image: my-app:latest
    restart: always
    ports:
      - 80:3000

µÇ¼ºó¸´ÖÆ

Õâ¸ödocker-compose.ymlÎļþָʾDockerÔËÐÐÒ»¸öappЧÀÍ£¬²¢Ê¹ÓÃÊʲŹ¹½¨µÄmy-app¾µÏñ×÷ΪÆä»ù´¡¾µÏñ¡£±ðµÄ£¬»¹¿ÉÒÔÉèÖö˿ÚÓ³Éä¼°ÆäËûЧÀÍ¡£

°²ÅÅÓ¦ÓÃ

ʹÓÃÒÔÏÂÏÂÁîÔÚÉú²úÇéÐÎÖа²ÅÅÓ¦Óãº

docker-compose up -d

µÇ¼ºó¸´ÖÆ

Õâ¸öÏÂÁî»áÔÚºǫ́Æô¶¯appЧÀÍ£¬²¢½«Æä̻¶ÔÚÖ÷»úµÄ80¶Ë¿ÚÉÏ¡£

ÒÔÉϾÍÊÇÔõÑùʹÓÃDocker¾ÙÐÐÒ»Á¬¼¯³ÉºÍÒ»Á¬°²ÅŵÄÏêϸ°ì·¨ºÍ´úÂëʾÀý¡£Í¨¹ýDocker£¬¿ÉÒÔ¼ò»¯ÇéÐÎÉèÖúͰ²ÅÅÀú³Ì£¬Ìá¸ß¿ª·¢Ð§ÂʺÍÓ¦ÓõĿɿ¿ÐÔ¡£

ÒÔÉϾÍÊÇÔõÑùʹÓÃDocker¾ÙÐÐÒ»Á¬¼¯³ÉºÍÒ»Á¬°²ÅŵÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡

ÃâÔð˵Ã÷£ºÒÔÉÏչʾÄÚÈÝȪԴÓÚÏàÖúýÌå¡¢ÆóÒµ»ú¹¹¡¢ÍøÓÑÌṩ»òÍøÂçÍøÂçÕûÀí£¬°æȨÕùÒéÓë±¾Õ¾Î޹أ¬ÎÄÕÂÉæ¼°¿´·¨Óë¿´·¨²»´ú±í×ðÁú¿­Ê±ÂËÓÍ»úÍø¹Ù·½Ì¬¶È£¬Çë¶ÁÕß½ö×ö²Î¿¼¡£±¾ÎĽӴýתÔØ£¬×ªÔØÇë˵Ã÷À´ÓÉ¡£ÈôÄúÒÔΪ±¾ÎÄÇÖÕ¼ÁËÄúµÄ°æȨÐÅÏ¢£¬»òÄú·¢Ã÷¸ÃÄÚÈÝÓÐÈκÎÉæ¼°ÓÐÎ¥¹«µÂ¡¢Ã°·¸Ö´·¨µÈÎ¥·¨ÐÅÏ¢£¬ÇëÄúÁ¬Ã¦ÁªÏµ×ðÁú¿­Ê±ÊµÊ±ÐÞÕý»òɾ³ý¡£

Ïà¹ØÐÂÎÅ

ÁªÏµ×ðÁú¿­Ê±

13452372176

¿É΢ÐÅÔÚÏß×Éѯ

ÊÂÇéʱ¼ä£ºÖÜÒ»ÖÁÖÜÎ壬9:30-18:30£¬½ÚãåÈÕÐÝÏ¢

QR code
¡¾ÍøÕ¾µØͼ¡¿¡¾sitemap¡¿