- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么我的 docker-compose 以我的 dockerfile 中的 prod 阶段为目标也运行 dev 目标?
命令:
docker-compose -f 'docker-compose-prod.yml' up --build
我专门针对 docker-compose-prod.yml
中的 prod
但 dev
目标也在运行。
Step 4/18 : FROM base as dev
---> 89ae35cdccf6
Step 5/18 : RUN npm install
---> Using cache
---> 8d6693e78ce0
Step 6/18 : COPY . .
---> 93518e386a6e
Step 7/18 : RUN npm run build
---> Running in 44199ae5793a
docker 文件:
# base
FROM node:lts-alpine as base
WORKDIR /usr/src/app
COPY package*.json ./
# dev
FROM base as dev
RUN npm install
COPY . .
RUN npm run build
EXPOSE 8080
CMD ["npm", "run", "serve"]
FROM base as prod-build
RUN npm install
COPY . .
RUN npm run build:production
# prod
FROM nginx:stable-alpine as prod
COPY --from=prod-build /usr/src/app/dist /usr/share/nginx/html
COPY nginx/nginx.conf /etc/nginx/conf.d
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
docker-compose-prod.yml:
version: "3.7"
services:
app:
image: my-app:prod
build:
context: .
target: prod
ports:
- 80:80
restart: always
最佳答案
使用经典构建器,一个多阶段的 Dockerfile 从头到尾被解析,并且可以通过指定目标阶段停止一直解析到最后。通往目标阶段的所有阶段都构建在流程中。
Docker 一直在使用 buildkit它执行 Dockerfile 的依赖图分析并同时构建所有依赖项和目标阶段,跳过任何非依赖项的阶段。您可以通过在运行构建的 shell 中设置变量或在引擎中配置功能标志来切换到它。
export DOCKER_BUILDKIT=1
docker build ...
或者只是
DOCKER_BUILDKIT=1 docker build ...
或功能标志:
# cat /etc/docker/daemon.json
{ "features": {"buildkit": true } }
# systemctl reload docker
另一种选择是将您的 Dockerfile 拆分为单独的 dockerfile,因为开发镜像和生产镜像之间几乎没有依赖关系,基本镜像可以从中完全外部化。或者重新设计 Dockerfile,使这两个阶段几乎相同,并且 dev 或 prod 是另一个的轻微扩展。那么构建依赖阶段就没有缺点了。
关于docker - 为什么我的 docker-compose 以我的 dockerfile 中的 prod 阶段为目标也运行 dev 目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64446806/
在 Angular 2 中,我相信你必须使用: enableProductionMode() 我在我的 environment.prod.ts 文件中调用它。 然后我可以调用: ng b -prod
我正在使用 docker,所以在生产模式下,我使用链接容器,其 URL 为“http://api:3000/” 而不是“http://localhost:3000/”在开发模式下。 如果“ng bui
每当我进行更改时,我都会运行此命令来构建我的项目: ng build --prod --aot=false --build-optimizer=false 这一直很好,直到我今天犯了一个错误。我偶然在
我们有两个分支:1. HEAD - 最新版本(AKA Trunc)2. PROD——发布版本 当您修复已发布版本中的错误时,您会执行以下哪些操作: 在 PROD 中修复它,然后合并到 HEAD 中 在
我必须运行抓取任务来为我的 App Engine (Java) 应用程序收集数据。 我不确定哪个最好 - 在开发模式下抓取数据并将其上传到产品或在应用程序在生产环境中运行时抓取它。 有区别吗? 将大量
我正在为一个项目使用最新的 angular-cli (beta-18)。我知道 cli 仍处于非常早期的阶段,但我很困惑为什么我的最终包大小在没有 AoT 的情况下实际上更小。 当我运行 ng bui
我正在阅读 Numpy 文档,似乎函数 np.prod(...)、np.product(...) 和ndarray 方法 a.prod(...) 都是等价的。 在样式/可读性和性能方面是否有首选版本可
ng build --prod 和 ng build --env=prod 之间有什么区别? 我的理解是 ng build --env=prod 仅在 environment.prod.ts 中设置环
我的 Angular 项目是 @Angular4.3.3 ng build -prod 构建需要 77 秒 ng build --prod --build-optimizer=true 构建需要 19
如果这是重复的,请将其标记为重复。另外,我不确定这是否是一个基于意见的问题。我的谷歌搜索没有返回任何与我的困境相关的信息,我也不确定我应该谷歌搜索什么。 ( 1 , 2 ) 我的问题是关于如何防止在
当我尝试使用 --prod 选项运行 ng build 时,它会编译成一个 main.js 文件,并且我在控制台中没有收到任何错误。 但是当我在浏览器中运行应用程序时,它仍然会查找单独的 js 文件。
当我使用命令 npm run build -- --prod 时,我收到以下错误消息: 属性“PropertyName1”是私有(private)属性,只能在“AppComponent”类中访问 “A
Angular 生产构建不会在我的项目中生成唯一的哈希值。 以下是构建日志截图 无法在新的 angular cli 项目中重现此问题,似乎我的项目中存在一些问题。 我正在使用 Angular - 6.
我第一次尝试在生产环境中运行我的项目,但没有按预期进行。 按照此处的说明操作后 https://symfony.com/doc/current/deployment.html我的 localhost/
我想在开发构建期间排除一个模块,但对于生产构建添加它。 在 settings.gradle我有: if (!this.hasProperty("-cart-view")) { println("
我的 Symfony 3 应用程序在我的本地网络服务器上完美运行。由于它安装在远程 Web 服务器上,因此会生成空白页面,甚至路由也不起作用。编辑 web/app.php $kernel = new
如何仅为 PROD 环境设置自定义错误页面?我想显示用于生产的自定义环境,但显示普通环境,但开发环境除外。 有什么想法吗? 最佳答案 我遇到了同样的问题,解决方案非常简单。您必须修改参数twig.ex
我的 Symfony 3 应用程序在我的本地网络服务器上完美运行。由于它安装在远程 Web 服务器上,因此会生成空白页面,甚至路由也不起作用。编辑 web/app.php $kernel = new
是 fullcalendar 用于插入日历并发挥其魔力的 html 标签。这是一个很棒的工具,但是发生了一些奇怪的事情。 我的日历是根据数据库中的事件创建的,所有这些东西都运行良好。问题是这样的..
我有 4 个 yaml 文件 部署.yaml 服务.yaml 入口.yaml issuer.yaml 我想将letsencrypt-prod 用于我的认证服务。但它不起作用。 当我用来确定入口正在工作
我是一名优秀的程序员,十分优秀!