如何在IDE中使用Docker

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在IDE中使用Docker相关的知识,希望对你有一定的参考价值。

参考技术A 使用SpringCloud构建实际的微服务架构。  基本概念:  使用Docker进行集成测试  混合持久化  微服务架构  服务发现  API网关  Docker  使用Docker对每一个服务进行构建和部署。使用DockerCompose在一个开发机上进行端到端的集成测试。  混合持久化  混合持久化其实就是说使用多种数据库来存储。不同的微服务实例都会使用它们自己的数据库,并通过REST服务或者消息总线来通信,举个例子,你可以使用基于以下数据库来构建微服务:  Neo4j(图形化)  MongoDB(文档化)  mysql(关联)  微服务架构  这个例子演示了如何使用微服务创建一个新的应用。由于在项目中的每一个微服务只有一个单一的父项目。开发者为此得到的收益是可以在本机上运行和开发每一个微服务。添加一个新的微服务非常简单,当发现微服务时将会自动发现运行时的集群环境上。  ServiceDiscovery  项目中包含两个发现服务,一个在NetflixEureka,另一个使用了  ConsulfromHashicorp。多种发现服务提供了多种选择,一个是使用(Consul)来做DNS服务集群,另一个是(Consul)基于代理的API网关。  API网关  每一个微服务都关联Eureka,在整个集群中检索API路由。使用这个策略,每一个在集群上运行的微服务只需要通过一个共同的API网关进行负载均衡和暴露接口,每一个服务也会自动发现并将路由请求转发到自己的路由服务中。这个代理技术有助于开发用户界面,作为平台完整的API通过自己的主机映射为代理服务。  Docker实例  下面的实例将会通过Maven来构建,使用Docker为每一个微服务构建容器镜像。我们可以很优雅的使用DockerCompose在我们自己的主机上搭建全部的微服务集群。  开始构建  在这之前,请先移步至项目的GitHub仓库。  pose/install/。  环境要求  能够运行实例程序,需要在你的开发机上安装下面的软件:  Maven3  Java8  Docker  DockerCompose  构建项目  通过命令行方式来构建当前项目,在项目的根目录中运行如下的命令:  $mvncleaninstall  项目将会根据pom.xml中的每一个项目声明中下载相应的依赖jar包。每一个服务都将会被构建,同时Maven的Docker插件将会自动从本地DockerRegistry中构建每一个容器镜像。Docker将会在构建成功后,根据命令行运行mvncleaninstall来清除相应的资源。

如何在构建docker镜像时执行SonarQube扫描.NET Core应用

前言

SonarQube是一款静态代码质量分析工具,它常用于检测代码中的Bug、漏洞和代码异味,并且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告。

一般情况下,我们在Jenkins管道中配置SonarQube,在编译过程时执行扫描。

在本文中,我们将介绍不使用Jenkins,通过编写Dockerfile,以便在构建docker镜像时,同时执行SonarQube代码扫描。

Dockerfile

我们把Dockerfile分成多个步骤,下面来一步步讲解:

1.定义编译环境

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app

将编译环境和最后的运行环境分开。

2.定义SonarQube参数

ENV SONAR_URL "http://xxx:9000"
ENV SONAR_TOKEN xxx
ENV SONAR_PROJECT xxx

参数包含SonarQube服务器地址和Token,这个和Jenkins配置一致。

项目名称SONAR_PROJECT对应SonarQube服务器上的配置。

3.安装Java

RUN apt-get update && apt-get install -y openjdk-11-jre

这是运行SonarQube必须的。

4.安装dotnet命令行工具

RUN dotnet tool install --global dotnet-sonarscanner --version 5.3.1

ENV PATH="$PATH:/root/.dotnet/tools"

这是SonarQube扫描.NET Core程序必须的。

5.启动扫描

RUN dotnet sonarscanner begin \\
    /k:"$SONAR_PROJECT" \\
    /d:sonar.host.url="$SONAR_URL" \\
    /d:sonar.login="$SONAR_TOKEN"

dotnet-sonarscanner详细参数可参见:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-msbuild/

6.编译应用

COPY *.csproj .
RUN dotnet restore

COPY . .

RUN dotnet publish --output /publish/

复制文件,恢复Nuget包,编译应用程序。

7.结束扫描

RUN dotnet sonarscanner end /d:sonar.login="$SONAR_TOKEN"

结束扫码并上传SonarQube扫描结果。

8.运行应用

FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build-env /publish .
ENTRYPOINT ["dotnet", "xxx.dll"]

从SDK镜像复制编译输出,然后执行运行命令。

结论

最后,只需执行docker build命令即可生成镜像,并在构建过程中运行SonarQube扫描:

docker build .

想了解更多内容,请关注我的个人公众号”My IO“

以上是关于如何在IDE中使用Docker的主要内容,如果未能解决你的问题,请参考以下文章

如何在IDE部署springboot项目(有swagger和无swagger都是一样的)到服务器或者虚拟机上的docker

如何通过 SSH 连接到 Kubernetes 集群中的 docker 容器? [关闭]

如何在构建docker镜像时执行SonarQube扫描.NET Core应用

如何在 IDE 中使用 Grails 依赖项

用于非 Web 应用程序的带有 Docker + IDE 的 Python 工作流

如何在 phpstorm 中使用 phalcon-devtools\ide\phpstorm?