当前位置: 首页 > 知识库问答 >
问题:

为开发和生产环境构建容器

归俊杰
2023-03-14

您如何为开发和生产(集群)构建图像:

我正试图为两者都提供一个Dockerfile,以保持“Dockerfile实现在一个地方”,如继承:

FROM golang AS gobase
ENV APP_ENV "pro"
COPY ./app /go/src/github.com/user/myProject/app
WORKDIR /go/src/github.com/user/myProject/app

RUN go get ./
RUN go build
EXPOSE 8080

FROM gobase AS godev

ENV APP_ENV "dev"

RUN go get github.com/pilu/fresh
RUN go-wrapper download
RUN go-wrapper install

CMD [ "fresh" ]

然后使用docker compose。开发yml

就像docker compose一样。开发yml:

version: '2'

services:
  godev:
    environment:
      - APP_ENV="dev"
    image: godev

所以首先,命名不起作用。

额外的问题:如何为生产构建一个映像-您是否只需在一个容器中编译(docker运行),然后将二进制文件复制到一个新容器中?

共有2个答案

公羊浩阔
2023-03-14

基本上,您应该选择以下选项之一:

  1. 正如Munchkin在他的回答中所说,使用标签来区分prod和dev。如果您真的,真的,真的需要容器中的不同东西,这应该是您的选择。但通常情况下不应该是这样。您通常总是希望以相同的方式在本地、开发和产品中运行容器——这就是容器的好处!如果它在本地工作,它将在开发和产品中工作:)
  2. 尝试在每个阶段使用完全相同的构建。当然可能会有差异。例如,如果您有一个数据库,您可能不想使用生产数据库。相反,让您的图像可以使用环境变量进行配置,以适应您阶段的不同配置。这是您最大限度地降低不同阶段构建风险的方法!

如果要进一步了解如何配置docker映像,可能需要阅读以下内容:https://dantehranian.wordpress.com/2015/03/25/how-should-i-get-application-configuration-into-my-docker-containers/

经炜
2023-03-14

不要将dev用作名称,而是用作标记:

go:dev
go:prod

还有你的作曲。yml

services:
  go:
    image: go:dev

奖励:在“编辑2017年6月29日”下查看此答案,并将此构建步骤用于两者(开发和生产)

 类似资料:
  • 生产环境打包要做两件事: 压缩应用代码; 使用 Vue.js 指南中描述的部署方式去除 Vue.js 中的警告。 下面是配置示例: // webpack.config.js module.exports = { // ... other options plugins: [ // short-circuits all Vue.js warning code new webp

  • 在构建我们的生产bundle时有两件事情要做: 1.压缩我们的应用代码; 2.使用Vue.js指南中描述的设置删除Vue.js源代码中的所有警告。 这里有一个示例的配置: // webpack.config.js module.exports = { // ... 其余配置 plugins: [ // 忽略所有Vue.js警告代码 new webpack.DefinePlu

  • 更新时间:2019-08-31 11:22:33 服务分为生产环境与开发环境,未发布的服务认为是在开发环境,发布后的服务为生产环境的服务。生产环境的服务才可以在web工作台,或代码工程内调用。生产环境的服务不可再进行修改,需要在开发环境中修改部署发布服务后,才可生效。 服务运维监控功能是为生产环境的服务提供的,您可以在此查看生产环境服务的调用量及运行日志。

  • 我正在考虑使用Firebase作为MBaaS,但是我找不到任何可靠的解决方案来解决以下问题: 我想设置两个独立的Firebase环境,一个用于开发,一个用于生产,但我不想在开发和生产环境之间手动复制特性(例如远程配置设置、通知规则等)。 有什么建议吗?有没有比拥有两个独立的环境更好的方法? 在您发布关于如何建立单独的Firebase帐户的问题的另一个答案之前:这不是问题,请再读一遍。问题是:如何在

  • 目标 建立一个lesson3项目,解决上一节lesson2遗留下来的—即开发环境打包到生产环境的问题。 知识点 1、process.env.NODE_ENV:node运行环境变量。 课程内容 process.env.NODE_ENV是node运行时的全局变量,node服务端中的任一js文件中都可以拿到它的值,先来试试是否真的能获取到值 先新建一个lesson3的项目,再创建一个test.js文件

  • 依照以下操作,你可在Mac,Linux(Debia/Ubuntu)上搭建PPMessage开发环境。 下载PPMessage源代码 首先需要安装git,然后从github下载源代码,假设保存路径为~/Documents/ppmessage。 git clone git@github.com:PPMESSAGE/ppmessage.git 安装依赖软件 进入~/Documents/ppmessage