【问题标题】:Running application within Docker containers在 Docker 容器中运行应用程序
【发布时间】:2019-09-26 17:06:36
【问题描述】:

如果有人可能知道,如果您想在 Docker 容器中运行应用程序,是否需要将数据库和服务本身分开 Dockerfile?

不太清楚在哪里指定外部数据库和服务器名称,是在 .env 文件中吗? https://github.com/gurock/testrail-docker/blob/master/README.md http://docs.gurock.com/testrail-admin/installation-docker/migrating-upgrading-testrail

【问题讨论】:

    标签: docker


    【解决方案1】:

    是的,您应该在单独的容器中运行应用程序和数据库。

    不太清楚在哪里指定外部数据库和服务器 名称,在 .env 文件中吗?

    你有两个选项来指定环境变量

    • .env 文件
    • 环境变量

    将 .env 文件放在 docker-compose 的根目录中,并在 docker-compose 文件中指定。

    services:
      api:
        image: 'node:6-alpine'
        env_file:
         - .env
    

    使用环境

        environment:
          MYSQL_USER:     "${DB_USER:-testrail}"
          MYSQL_PASSWORD: "${DB_PWD:-testrail}"
          MYSQL_DATABASE: "${DB_NAME:-testrail}"
          MYSQL_ROOT_PASSWORD: "${DB_ROOT_PWD:-my-secret-password}"
          MYSQL_ALLOW_EMPTY_PASSWORD: 'false'
    

    数据库和服务需要单独的Dockerfile吗

    最好使用官方的数据库镜像,服务方面可以自定义镜像,但是你提供的链接是更好的选择,以docker-compose.yml开头。

    另外,documentation of docker-compose 已经在链接中给出。

    【讨论】:

    • 谢谢,但是如果你想使用 docker 而不是 docker-compose,那么设置会有很大不同吗?
    • 不,docker compose 只是让你轻松
    • 我知道这会让它变得更容易,但如果我只想使用 docker,这种情况下的方法是什么?
    • 你可以使用相同的方法,你只需要 docker run 和 docker build 命令
    【解决方案2】:

    理论上,您可以让应用程序和数据库在同一个容器中运行,但这会产生一些意想不到的后果,例如,如果数据库崩溃,应用程序可能仍在运行,但 docker 不会注意到数据库崩溃如果它不知道就结束。

    在容器中运行数据库时需要考虑的一点是数据持久性,这意味着即使容器被杀死或删除,数据仍然存在,并且一旦再次创建容器,容器仍然可以访问数据库和其他数据。 这是一篇很好的文章,它解释了 docker 中的卷,在它自己的容器中运行 mysql 并使用一个卷来保存数据: https://severalnines.com/database-blog/mysql-docker-containers-understanding-basics

    在您链接的存储库的上下文中,似乎有一个单独的 Dockerfile 用于数据库,并且您可以选择使用 Mariadb 或 MySQL,请参见此处: https://github.com/gurock/testrail-docker/tree/master/Dockerfiles/testrail_mariadb

    这里:

    https://github.com/gurock/testrail-docker/tree/master/Dockerfiles/testrail_mysql

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多