当前位置: 首页 > 面试题库 >

Docker多种环境

易京
2023-03-14
问题内容

我想把头围在Docker上,但是很难弄清楚。我试图在我的小项目(MERN堆栈)中实现它,并且我在思考如何区分开发(可能是登台)和生产环境。

我看到了一个示例,其中他们使用了2个Docker文件和2个docker-compose文件(每个对都包含一个env,因此Dockerfile +
docker-compose.yml用于prod,Dockerfile-dev + docker-compose-dev.yml用于dev) 。

但这对我来说似乎有点过头了。我希望仅在两个文件中使用它。

另外一个问题是,例如,对于开发,我想在全球范围内安装nodemon,而不是为了安装。

在完美的解决方案中,我想运行这样的东西

docker-compose -e ENV=dev build
docker-compose -e ENV=dev up

请记住,我仍然没有完全使用docker,因此,如果您发现了我对docker的一些误解,则可以指出它们。


问题答案:

你可以采取一些线索,从“ 在生产中使用撰写 ”

您几乎肯定会想要对应用程序配置进行更改,使其更适合实时环境。这些更改可能包括:

  • 删除应用程序代码的所有卷绑定,以使代码保留在容器内,并且不能从外部更改
  • 绑定到主机上的不同端口
  • 设置不同的环境变量(例如,减少日志记录的冗长性或启用电子邮件发送)
  • 指定重启策略(例如,重启:始终)以避免停​​机
  • 添加额外的服务(例如,日志聚合器)

然后,该建议与您提到的示例不太相似:

因此,您可能需要定义一个额外的Compose文件,例如production.yml,以指定适合生产的配置。该配置文件只需要包含您想要对原始Compose文件进行的更改。

docker-compose -f docker-compose.yml -f production.yml up -d

这种 覆盖机制
比尝试在一个撰写文件中混合使用dev和prod逻辑更好,并且使用环境变量尝试选择一个更好。

注意:如果您命名第二个dockerfile docker-compose.override.yml,则简单的docker-compose up将自动读取覆盖。
但是根据您的情况,基于环境的名称会更清晰。



 类似资料:
  • 本文向大家介绍Docker Compose在不同环境的多种安装方式,包括了Docker Compose在不同环境的多种安装方式的使用技巧和注意事项,需要的朋友参考一下 一、在线安装 目前只尝试了linux x86架构在线安装 1. 下载 docker-compose 下载 docker-compose到 /usr/local/bin/ 中 2. 给 docker-compose 执行权限 3.验证

  • 我目前有一个spring boot应用程序。 application.yml 应用程序-dev.yml 在application.yml中 现在我有多个配置为开发provile,例如。例如dev-1,dev-2和dev-3 我如何配置它?任何最好的或标准的方法做它?我是在2.3.4 spring boot版本

  • 拉取镜像 安装docker 进入swoole-src/travis/目录,执行TRAVIS_BRANCH=alpine ./route.sh 进入 Docker docker exec -it -e LINES=$(tput lines) -e COLUMNS=$(tput cols) swoole bash

  • 我对docker是个新手,开始学习它,但我有点困惑。 我需要在windows环境下运行应用程序。 我有Windows7-Native Docker只适用于Windows10,所以我需要下载Windows7的Docker工具箱。 谢谢

  • 问题内容: 问题 我有一组客户端计算机,它们是企业Web应用程序的一部分。每台机器都运行相同的软件,这是连接到服务器的基于PyQT的Web客户端。该客户端软件会定期更新,我想拥有一些配置/配置工具,该工具可以在每台计算机上具有相同的环境,从而可以轻松地在每台客户端计算机上部署和配置软件。 问题是我尝试使用Chef,但是实际上需要花费很多精力来保持Chef的知识和技能(我们没有专门的Ops专家),而

  • 例如,假设一个团队正在开发一个产品,该产品需要部署几个API,以及一个前端应用程序。通常,这将需要至少2个环境: 分段:在发布到客户端之前进行迭代/测试和验证 生产:这是客户机可以访问的环境。应包含稳定且经过良好测试的特性。 那么,假设团队正在使用Kubernetes,什么是托管这些环境的好实践呢?到目前为止,我们已经考虑了两个选择: null null 可能还有其他一些问题,所以我联系了Stac