Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 免费的性爱视频,亚洲国产成人久久一区www,亚洲精品一区二区三区r

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          docker中部署項目

          、簡介

          這里介紹在docker中部署自定義項目。

          二、部署流程

          在docker中部署自定義項目,流程為創建自定義項目、生成自定義項目鏡像、docker容器中運行項目鏡像。

          2.1 創建自定義項目

          這里略過,根據需要創建。

          2.2 生成目標鏡像

          生成目標鏡像有兩種方式,一種是根據maven插件生成,另一種根據定義Dockerfile文件生成。

          2.2.1 根據maven插件生成鏡像

          在pom.xml的插件模塊,添加類似如下配置:

          <build>

          <plugins>

          <plugin>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-maven-plugin</artifactId>

          </plugin>

          <!-- docker 部署插件 -->

          <plugin>

          <groupId>com.spotify</groupId>

          <artifactId>docker-maven-plugin</artifactId>

          <version>1.0.0</version>

          <!--將插件綁定在某個phase執行-->

          <executions>

          <execution>

          <id>build-image</id>

          <!--綁定在package階段執行插件,即執行mvn package時,就會自動執行mvn docker:build-->

          <phase>package</phase>

          <goals>

          <goal>build</goal>

          </goals>

          </execution>

          </executions>

          <configuration>

          <!--指定鏡像名-->

          <imageName>${project.artifactId}</imageName>

          <!--指定標簽,即鏡像版本-->

          <imageTags>

          <imageTag>latest</imageTag>

          </imageTags>

          <!--指定基礎鏡像jdk1.8-->

          <baseImage>java</baseImage>

          <!-- 鏡像制作人本人信息 -->

          <maintainer>author_name</maintainer>

          <!--切換到指定目錄下,這里為/home/app目錄-->

          <workdir>/home/app</workdir>

          <!--${project.build.finalName}.jar是打包后生成的jar包的名字-->

          <!-- jar包部署-->

          <entryPoint>["java", "-jar", "/home/app/${project.build.finalName}.jar"]</entryPoint>

          <!--指定docker服務地址-->

          <!-- <dockerHost>tcp://localhost:2375</dockerHost>-->

          <!-- 復制生成的jar包到docker容器指定目錄-->

          <resources>

          <resource>

          <!-- 將生成的jar包復制到容器指定路徑下-->

          <targetPath>/home/app</targetPath>

          <!--指定資源目錄,這里為maven打包后的target目錄-->

          <directory>${project.build.directory}</directory>

          <!-- 指定需要復制的文件,這里為生成的jar包 -->

          <include>${project.build.finalName}.jar</include>

          </resource>

          </resources>

          </configuration>

          </plugin>

          </plugins>

          </build>

          接著運行mavan打包命令即可:

          mvn clean package -Dmaven.test.skip=true

          2.2.2 定義Dockerfile文件生成

          Dockerfile文件用于生成鏡像,文件內容可參數https://www.runoob.com/docker/docker-dockerfile.html。 常用定義含義如下:

          FROM:指定新構建鏡像的基礎鏡像,如java項目則依賴于基礎java鏡像,對應書寫為:FROM java

          RUN:在docker run 時運行,用于執行命令,格式為:RUN ["可執行文件", "參數1", "參數2"],如:RUN ["java", "--version"],在shell下執行命令:java --version

          COPY:從上下文目錄中復制文件到指定目錄,格式為:COPY [--chown=<user>:<group>] <源路徑1>... <目標路徑>,如:COPY target/hello-0.0.1-SNAPSHOT.jar / ,即將上下文下的target/hello-0.0.1-SNAPSHOT.jar文件復制到容器的/目錄下

          ADD:和COPY類似,推薦使用COPY

          CMD:和RUN類似,在 docker build時運行

          ENTRYPOINT:和CMD類似

          ENV:設置環境變量,格式為:ENV <key> <value> 或 ENV <key1>=<value1> <key2>=<value2>...

          ARG:構建參數,和ENV類似,僅在Dockerfile內有效,即僅在docker build過程中有效

          VOLUME:定義掛載數據卷,默認會掛到匿名卷下,格式為:VOLUME ["<路徑1>", "<路徑2>"...] 或 VOLUME <路徑>

          EXPOSE:聲明端口,方便在使用中映射,在使用中使用docker run -P隨機端口映射時,會隨機映射EXPOSE端口

          WORKDIR:指定工作目錄,格式如:WORKDIR <工作目錄路徑>

          USER:指定后續命令執行的用戶和用戶組,格式如:USER <用戶名>[:<用戶組>]

          Dockerfile文件放于項目根目錄下,接著執行格式如下的命令生成鏡像:

          docker build -t 鏡像名稱:鏡像標簽 上下文路徑(需要打包復制到鏡像的目錄,未指定則默認是存放Dockerfile文件的所在目錄)

          如:

          docker build -t spring_boot_docker_image:latest .

          2.3 運行目標鏡像

          運行目標鏡像,可以直接命令運行,也可以通過idea插件運行。

          2.3.1 命令運行

          命令運行同其它鏡像運行一樣,示例如下:

          docker run -d -p 20004:8051 --name spring_boot_docker spring_boot_docker_image

          2.3.2 通過idea插件運行

          idea中通過插件集成了docker功能,可以對docker中鏡像及容器進行管理。在操作前,提前安裝好idea及docker插件。以項目部署為例,操作包含idea配置和目標項目配置,具體如下:

          idea配置

          1、idea控制界面,安裝docker插件,Preferences | Plugins ->docker;

          2、idea控制界面,添加docker,Preferences | Build, Execution, Deployment | Docker -> 添加docker,并連接成功

          3、回到idea操作界面,選擇底部Services,在底部左則可看到安裝好的Docker,右鍵點擊連接。下拉選項可以看到已經安裝的鏡像和容器

          目標項目配置

          1、修改pom.xml,添加docker-maven-plugin插件

          2、運行maven package,生成項目鏡像

          3、在idea操作界面services中的docker鏡像中,找到剛創建的項目鏡像,右鍵新建容器,在彈框中指定容器名稱、機器端口與容器端口映射關系

          4、運行新創建的容器,采用機器端口即可訪問docker容器中運行的鏡像

          三、示例

          這里以部署自定義項目spring_boot_docker到docker為例,直接借助idea的docker插件部署。

          3.1 創建自定義項目

          示例自定義項目為spring_boot_docker,包含文件如下:

          maven配置文件pom.xml

          <?xml version="1.0" encoding="UTF-8"?>

          <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

          <modelVersion>4.0.0</modelVersion>

          <parent>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-starter-parent</artifactId>

          <version>2.3.3.RELEASE</version>

          <relativePath/> <!-- lookup parent from repository -->

          </parent>

          <groupId>com.dragon.study</groupId>

          <artifactId>spring_boot_docker</artifactId>

          <version>0.0.1-SNAPSHOT</version>

          <name>spring_boot_docker</name>

          <description>Demo project for Spring Boot</description>

          <properties>

          <java.version>1.8</java.version>

          </properties>

          <dependencies>

          <dependency>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-starter-web</artifactId>

          </dependency>

          <dependency>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-starter-test</artifactId>

          <scope>test</scope>

          </dependency>

          </dependencies>

          <build>

          <plugins>

          <plugin>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-maven-plugin</artifactId>

          </plugin>

          <!-- docker 部署插件 -->

          <plugin>

          <groupId>com.spotify</groupId>

          <artifactId>docker-maven-plugin</artifactId>

          <version>1.0.0</version>

          <!--將插件綁定在某個phase執行-->

          <executions>

          <execution>

          <id>build-image</id>

          <!--綁定在package階段執行插件,即執行mvn package時,就會自動執行mvn docker:build-->

          <phase>package</phase>

          <goals>

          <goal>build</goal>

          </goals>

          </execution>

          </executions>

          <configuration>

          <!--指定鏡像名-->

          <imageName>${project.artifactId}</imageName>

          <!--指定標簽,即鏡像版本-->

          <imageTags>

          <imageTag>latest</imageTag>

          </imageTags>

          <!--指定基礎鏡像jdk1.8-->

          <baseImage>java</baseImage>

          <!-- 鏡像制作人本人信息 -->

          <maintainer>author_name</maintainer>

          <!--切換到指定目錄下,這里為/home/app目錄-->

          <workdir>/home/app</workdir>

          <!--${project.build.finalName}.jar是打包后生成的jar包的名字-->

          <!-- jar包部署-->

          <entryPoint>["java", "-jar", "/home/app/${project.build.finalName}.jar"]</entryPoint>

          <!--指定docker服務地址-->

          <!-- <dockerHost>tcp://localhost:2375</dockerHost>-->


          <!-- 復制生成的jar包到docker容器指定目錄-->

          <resources>

          <resource>

          <!-- 將生成的jar包復制到容器指定路徑下-->

          <targetPath>/home/app</targetPath>

          <!--指定資源目錄,這里為maven打包后的target目錄-->

          <directory>${project.build.directory}</directory>

          <!-- 指定需要復制的文件,這里為生成的jar包 -->

          <include>${project.build.finalName}.jar</include>

          </resource>

          </resources>

          </configuration>

          </plugin>

          </plugins>

          </build>

          </project>

          application.yaml文件

          spring:

          application:

          name: spring-boot-docker

          server:

          port: 8051

          HelloController.java類

          package com.dragon.study.spring_boot_docker.controller;

          import org.springframework.web.bind.annotation.RequestMapping;

          import org.springframework.web.bind.annotation.RestController;

          @RestController

          @RequestMapping

          public class HelloController {

          @RequestMapping("hello")

          public String hello(){

          return "hello, nice to meet you";

          }

          }

          啟動類SpringBootDockerApplication.java

          package com.dragon.study.spring_boot_docker;

          import org.springframework.boot.SpringApplication;

          import org.springframework.boot.autoconfigure.SpringBootApplication;

          @SpringBootApplication

          public class SpringBootDockerApplication {

          public static void main(String[] args) {

          SpringApplication.run(SpringBootDockerApplication.class, args);

          }

          }

          3.2 生成目標鏡像

          在idea中選擇maven的package,對自定義項目spring_boot_docker打包,打完包。可以在docker插件發現已經生成的包。當然也可以通過命令查看:

          docker images

          3.3 運行目標鏡像

          在idea的docker插件中,選擇新生成的鏡像,并創建容器,指定端口映射(20004:8051)信息,運行窗口即可,也可通過命令運行行運行,命令如下:

          docker run -d -p 20004:8051 --name spring_boot_docker spring_boot_docker

          3.4 測試

          GET http://localhost:20004/hello

          Accept: application/json

          響應:

          hello, nice to meet you

          ocker隨手筆記第一節 docker概念及安裝

          docker隨手筆記第二節 docker常用命令解析

          docker隨手筆記第三節 docker構建java鏡像

          docker隨手筆記第四節 docker安裝mysql5.7

          docker隨手筆記第五節 docker安裝redis4.0

          docker隨手筆記第六節 docker安裝jenkins

          docker隨手筆記第七節 jenkins通過git部署java微服務插件安裝

          docker隨手筆記第八節 jenkins通過git自動部署java微服務

          docker隨手筆記第九節 docker -v參數 目錄掛載總結

          docker隨手筆記第十節 docker 開啟遠程訪問

          docker隨手筆記第十一節 portainer.io安裝使用,比k8s簡單

          jenkins自動部署前端靜態頁面

          點擊新建任務



          輸入任務名稱,選擇構建自由風格軟件項目,然后點擊確定

          丟棄舊的構建配置


          源碼選擇你前端git倉庫地址,或者svn地址


          配置Delete workspace before build starts


          配置Post Steps,配置ssh,執行ssh腳本



          輸入ssh腳本

          mkdir -p /home/web
          cd /home/web
           
          #由于/var/jenkins_home這個目錄我映射到宿主機/jenkins/jenkins-data目錄
          cp -R /jenkins/jenkins-data/workspace/web/html html
          
           
          cat > Dockerfile << EOF
          FROM nginx
          EXPOSE 80
           
          COPY ./html /usr/share/nginx/html
          ENV TZ=Asia/Shanghai
          RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
          EOF
           
          docker build -t web:0.1 .
           
          d1=$(date "+%Y%m%d%H%M")
          name="web"
          appName=$name$d1
           
          docker stop $(docker ps | grep $name | awk '{print $1}')
          docker run --name $appName -d -p 8081:80 $appName:0.1 
          

          保存后點擊立即構建,這樣自動部署就成功了

          就可以訪問了,http://服務ip:8081


          主站蜘蛛池模板: 成人一区专区在线观看| 中文字幕AV无码一区二区三区| 无码毛片一区二区三区中文字幕| 国产一区二区三区不卡在线观看| 亚洲AV无码一区二区乱孑伦AS| 国产精品亚洲一区二区三区| 少妇无码一区二区三区免费| 久久精品人妻一区二区三区| 国产品无码一区二区三区在线| 国产精品视频一区二区三区无码| 精彩视频一区二区| 伊人久久一区二区三区无码 | 国产一区二区精品久久岳| 久久亚洲日韩精品一区二区三区| 亚洲一区精品伊人久久伊人| 日本一道一区二区免费看| 中文字幕乱码亚洲精品一区| 精品少妇ay一区二区三区| 日本午夜精品一区二区三区电影| 国产亚洲一区二区三区在线不卡| 精品在线一区二区三区| 伊人久久大香线蕉AV一区二区| 91精品一区二区| 亚洲一区二区久久| 中文字幕视频一区| 精品无码一区二区三区在线| 无码国产精品一区二区免费虚拟VR| 91一区二区视频| 精品视频一区二区三区四区| 国产电影一区二区| 精品国产一区二区三区在线| 国产精品一区二区香蕉| 后入内射国产一区二区| 一区在线免费观看| 国产一区二区免费| 亚洲一区二区三区深夜天堂| 无码国产精品一区二区免费 | 风流老熟女一区二区三区| 国产成人一区二区精品非洲| 一区二区三区在线看| 亚洲国产综合无码一区|