小编Mr.*_*ars的帖子

如何在 DevOps 生命周期的开发阶段使用 docker?

我有几个关于在开发阶段使用 Docker 的问题。

运维

我将提出三种不同的场景,说明我认为 Docker 可以在开发环境中使用的方式。假设我们正在用 Java 和 Spring Boot 创建一个 REST API。为此,我需要一个 MySQL 数据库。

  1. 第一个场景是使用 docker-compose 使用 MySQL 容器进行开发,并使用另一个容器中的 MySQL 和 Java 应用程序 (jar) 进行生产 docker-compose。为了开发,我启动 docker-compose-dev.yml 以仅启动数据库。使用 IDE(例如 IntelliJ Idea)启动和调试应用程序。对代码所做的任何更改,IDE 将通过应用更改来识别并重新启动应用程序。

  2. 第二种情况是,对于开发和生产环境,都有一个带有数据库和应用程序容器的 docker-compose。这样,每次我对代码进行更改时,我都必须重建映像,以便将更改加载到映像中并再次启动容器。这种场景可能是最典型的,用于使用 Docker 进行开发,但由于每次发生更改时都需要重建映像,因此看起来很慢。

  3. 第三种情况是前两种情况的混合。两个 docker-compose。开发 docker-compose 包含两个容器,但具有允许实时重新加载应用程序、映射卷和使用例如 Spring Dev Tools 的机制。通过这种方式,启动容器,如果文件发生任何更改,应用程序容器将检测到更改并重新启动。对于生产,docker-compose 将简单地使用两个容器创建,但没有实时重新加载的功能。在我看来,这将是理想的情况,但我认为这非常依赖于所使用的技术,因为并非所有技术都允许实时重新加载。

问题如下。

  • 使用 Docker 进行阶段时,以下哪种场景最典型?

  • 场景1是否很好地提出?即仅dockerize 外部服务,如数据库、队列等,使用IDE 进行应用的开发和调试,不使用Docker。

我提出的疑问和场景是在我提出场景 2 的问题之后出现的。随着代码的每次更改,必须重新构建映像并再次启动容器是浪费大量时间。简而言之,一个问题是:如何避免这种情况?

在此先感谢您的时间。

注意这可能是一个受制于意见的问题,但很高兴知道开发人员通常如何处理这些问题。

development-environment hotdeploy livereload docker docker-compose

9
推荐指数
1
解决办法
1618
查看次数

DDD 中是否存在应用程序事件术语?

领域事件在 DDD 中众所周知,可以在聚合根或领域服务中发布。我的问题是,域事件可以在应用程序服务/用例中发布吗?

例如,简化。我有一个名为 的应用程序服务UseCaseA,它执行调用一些聚合根的各种操作。如果我想在该用例结束时引发一个事件,我可以UseCaseAFinished在此应用程序服务中发布该事件吗?它是领域事件还是应该称为应用程序事件?DDD 中是否存在应用程序事件术语?

提前致谢。

domain-driven-design terminology domain-events

6
推荐指数
2
解决办法
1554
查看次数

静态属性(Python与Java)

Python类属性和Java静态属性有什么区别?

例如,

在Python中

class Example:
    attribute = 3
Run Code Online (Sandbox Code Playgroud)

在Java中

public class Example {

    private static int attribute;

}
Run Code Online (Sandbox Code Playgroud)

在Python中,可以使用对实例的引用来访问静态属性吗?

python java attributes class

5
推荐指数
1
解决办法
492
查看次数

用例接口(应用服务)?

在遵循具有 ddd 原则的六边形架构时,用例或应用程序服务是否应该具有接口和实现?例如,用例“删除视频”,是否应该让 IDeteVideo(接口)和 DeletVideoImpl(实现)实现该接口?

如果答案是肯定的,那么用例的接口应该在哪里,在领域层还是在应用层?很明显,实现应该总是在应用层。

我认为用例不是经常变化的东西,所以在我看来,我认为没有必要有一个接口,有实现就足够了。但是就六边形架构和 DDD 原则而言,是否对此有所说明?

提前致谢。

domain-driven-design use-case hexagonal-architecture

5
推荐指数
2
解决办法
531
查看次数

Angular Service Worker - 在 dist/styles.*.css 上 PurifyCSS 后哈希不匹配

当我使用 Service Worker 构建 Angular 应用程序时,它会创建一个包含每个文件的哈希值的哈希表,以检测应用程序的新版本何时可用。该哈希表位于 ngsw.json 中。

这是哈希值的示例。

有桌子

如果我想使用 PurifyCSS 清理未使用的 css,则 dist/styles.*.css 将更改文件内容及其哈希值,但 ngsw.json 具有旧哈希值。

在这种情况下,Angular Service Worker 将失败,因为存在哈希不匹配。

我怎样才能避免这种情况呢?运行 PurifyCSS 后是否应该在 ngsw.json 中手动更新哈希?是否有某种机制可以自动更新此值,或者可以在 angular-cli 为每个文件生成哈希之前执行 PurifyCSS 吗?

这个问题通常针对对服务工作者缓存的 dist 文件进行的任何类型的修改,因为哈希会改变,因此会出现哈希不匹配。这意味着 Service Worker 将无法工作。

先感谢您。

hash gulp purifycss angular angular-service-worker

4
推荐指数
1
解决办法
1810
查看次数