在Docker容器中运行应用程序

时间:2019-09-26 03:44:24

标签: docker

如果有人知道,是否需要在数据库和服务本身中使用单独的Dockerfile,以防您要在Docker容器中运行应用程序?

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

2 个答案:

答案 0 :(得分:0)

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

  

不清楚在哪里指定外部数据库和服务器   名称,是否在.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

答案 1 :(得分:0)

从理论上讲,您可以在同一容器中运行应用程序和数据库,但这会产生意想不到的后果,例如,如果数据库崩溃,则应用程序可能仍在运行,但是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