登录
首页 >  Golang >  Go问答

在 docker 应用程序中与测试方法分开运行 docker 镜像

来源:stackoverflow

时间:2024-04-07 09:27:32 177浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《在 docker 应用程序中与测试方法分开运行 docker 镜像》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

我有一个 docker 应用程序,它有两个容器。一个是 mysql,另一个是一些逻辑代码,我使用 dockerfile 创建了自定义映像。对于端到端测试,我希望在数据库中存储一些值,然后运行逻辑代码图像(golang 中的逻辑)。这是我当前拥有的 docker-compose 文件:

version: '3'
networks:
  docker-network:
    driver: bridge
services:
    database:
        image: mysql
        env_file:
          - ./src/logic/environment-variables.env
        ports:
          - 3306:3306
        healthcheck:
          test: "mysql -uroot -p$$MYSQL_ROOT_PASSWORD $$MYSQL_DATABASE -e 'select 1'"
          timeout: 20s
          retries: 10
        network:
          docker-network
    logic:
        container_name: main-logic
        build: ./src/logic/.
        depends_on:
          database:
            condition: service_healthy
        network:
          docker-network

我无法整体运行此应用程序,因为一旦数据库运行,它就会运行主程序。相反,我想启动数据库,在其中存储一些值,然后运行逻辑映像。我怎样才能在测试方法中做到这一点?

考虑的方法: 与测试方法分开启动 mysql 映像,然后在其中存储值。然后启动逻辑映像并检查数据库的结果。有没有更好的方法或框架可以用于此目的?


正确答案


这里您需要的是数据库迁移。应该按如下方式工作:

  • 在启动服务之前启动数据库实例。
  • 将服务连接到数据库。
  • 在数据库上运行迁移。
  • 继续执行服务。

考虑这个:https://github.com/golang-migrate/migrate

今天关于《在 docker 应用程序中与测试方法分开运行 docker 镜像》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>