- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个要部署到Kubernetes(GKE)的容器,并且我在本地构建的镜像很好,并且可以按预期运行,但是当将run命令更改为pwd && ls
时,该镜像似乎是从Google Container Registry中提取的返回此处显示的输出:
I 2020-06-17T16:24:54.222382706Z /app
I 2020-06-17T16:24:54.226108583Z lost+found
I 2020-06-17T16:24:54.226143620Z package-lock.json
docker run -it <container:tag> bash
运行时,相同命令的输出是这样的:
#${API_CONTAINER} resolves to gcr.io/<project>/container: I.E. tag gets appended
.../# docker run -it ${API_CONTAINER}latest bash
root@362737147de4:/app# pwd
/app
root@362737147de4:/app# ls
Dockerfile dist files node_modules package.json ssh.bat stop_forever.bat test tsconfig.json
cloudbuild.yaml environments log package-lock.json src startApi.sh swagger.json test.pdf tsconfig.test.json
root@362737147de4:/app#
latest
标签中删除一些标签来实现此目的。
--no-cache
,并从另一台计算机上的注册表中提取了数据,我的想法是GKE在从GCR提取镜像时遇到了问题。有什么方法可以将其放置在其他位置,或者可以了解拉动的情况吗?
FROM node:8.12.0
RUN mkdir /app
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
RUN apt-get update && apt-get install snmp -y
RUN npm install --unsafe-perm=true
RUN apt-get update \
&& apt-get install -y \
gconf-service \
libasound2 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libc6 \
libcairo2 \
libcups2 \
libdbus-1-3 \
libexpat1 \
libfontconfig1 \
libgcc1 \
libgconf-2-4 \
libgdk-pixbuf2.0-0 \
libglib2.0-0 \
libgtk-3-0 \
libnspr4 \
libpango-1.0-0 \
libpangocairo-1.0-0 \
libstdc++6 \
libx11-6 \
libx11-xcb1 \
libxcb1 \
libxcomposite1 \
libxcursor1 \
libxdamage1 \
libxext6 \
libxfixes3 \
libxi6 \
libxrandr2 \
libxrender1 \
libxss1 \
libxtst6 \
ca-certificates \
fonts-liberation \
libappindicator1 \
libnss3 \
lsb-release \
xdg-utils \
wget
COPY . /app
# Installing puppeteer and chromium for generating PDF of the invoices.
# Install latest chrome dev package and fonts to support major charsets (Chinese, Japanese, Arabic, Hebrew, Thai and a few others)
# Note: this installs the necessary libs to make the bundled version of Chromium that Puppeteer
# installs, work.
RUN apt-get update \
&& apt-get install -y wget gnupg libpam-cracklib \
&& wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
&& sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
&& apt-get update \
&& apt-get install -y google-chrome-unstable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
# Uncomment to skip the chromium download when installing puppeteer. If you do,
# you'll need to launch puppeteer with:
# browser.launch({executablePath: 'google-chrome-unstable'})
# ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
# Install puppeteer so it's available in the container.
RUN npm i puppeteer \
# Add user so we don't need --no-sandbox.
# same layer as npm install to keep re-chowned files from using up several hundred MBs more space
&& groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
&& mkdir -p /home/pptruser/Downloads \
&& chown -R pptruser:pptruser /home/pptruser \
&& chown -R pptruser:pptruser /app/node_modules
#build the api, and move into place.... framework options are limited with the build.
RUN npm i puppeteer kiwi-server-cli && kc build -e prod
RUN rm -Rf ./environments & rm -Rf ./src && cp -R ./dist/prod/* .
# Run everything after as non-privileged user.
# USER pptruser
CMD ["google-chrome-unstable"] # I have tried adding this here as well "&&", "node", "src/server.js"
docker push gcr.io/<projectid>/api:latest-<version>
,我已经使用
cloud auth configure-docker
设置了凭据,这是yaml list 的经过净化的版本:
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -f ./docker-compose.yml
kompose.version: 1.21.0 ()
creationTimestamp: null
labels:
io.kompose.service: api
name: api
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: api
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert -f ./docker-compose.yml
kompose.version: 1.21.0 ()
creationTimestamp: null
labels:
io.kompose.service: api
spec:
containers:
- args:
- bash
- -c
- node src/server.js
env:
- name: NODE_ENV
value: production
- name: TZ
value: America/New_York
image: gcr.io/<projectId>/api:latest-0.0.9
imagePullPolicy: Always
name: api
ports:
- containerPort: 8087
resources: {}
volumeMounts:
- mountPath: /app
name: api-claim0
- mountPath: /files
name: api-claim1
restartPolicy: Always
serviceAccountName: ""
volumes:
- name: api-claim0
persistentVolumeClaim:
claimName: api-claim0
- name: api-claim1
persistentVolumeClaim:
claimName: api-claim1
status: {}
最佳答案
解决方案来自docker-compose.yml
文件的原始意图,该文件是通过称为kompose
的工具转换为kubernetes list 的。原始的docker-compose文件用于开发,因此具有适当的覆盖,可将本地开发环境推送到正在运行的容器中。
这是因为yml文件中的原因:
services:
api:
build: ./api
volumes:
- ./api:/app
- ./api/files:/files
volumeMounts:
- mountPath: /app
name: api-claim0
- mountPath: /files
name: api-claim1
volumes:
- name: api-claim0
persistentVolumeClaim:
claimName: api-claim0
- name: api-claim1
persistentVolumeClaim:
claimName: api-claim1
关于docker - GCR-影像缺少两个文件,其余全部,本地影像已完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62434471/
这是我的 Androidmanifest.xml
我正在开始使用 redux-toolkit,在阅读文档并实现一些代码后,有些东西我不太明白,或者可能我的方法是错误的,这就是我在这里问的原因。无论如何,我有一些带有 asyncThunk 的切片,它调
My scenario 我使用 Coroutines 和 Room 来保存我的应用程序的用户配置文件数据。我有 CompleteProfileActivity :在那个用户填写他们的信息并确认它(确认
//更新:提供的答案有效,但我遇到了另一种情况。如果学生转到另一个职位,当有重叠时,他们需要保留完成前一个职位的学分。情况见下: 我有 2 门类(class),类(class) A 和类(class)
我想创建一个界面设计略有不同的简单计算器应用程序。如下图所示,我有来自用户的三个输入:第一个数字、运算符和第二个数字。我的问题是,一旦用户填写了这三个文本字段,等号 (resultBtn) 就会改变颜
我有一个 TransformManyBlock 可以创建许多“ Actor ”。它们流经多个 TransformBlocks 处理。一旦所有 Actor 都完成了所有步骤,我需要再次将所有内容作为一个
我正在尝试子类化 NSOperation,并从中读取一些样本,他们说:任务完成后,使用 NSOperation 的 KVO 来完成操作,代码在这里: [self willChangeValueForK
我有一个重新加载数据的应用程序(通过运行两个查询,将查询的信息附加到数组,然后重新加载 tableview 数据)。这两个查询都设置为在 viewDidLoad() 上运行的函数,但也链接到刷新函数(
我有个小问题。我们的一位客户自己开了一家 WooCommerce 商店,却忘记了加税。由于他不知所措,他决定寻求帮助来设置这一切。 不幸的是,现在这家商店已经上线,并且有大约 50 个已完成的订单。我
这个问题可能听起来像重复,但我已经尝试了有关 stackoverflow 的其他类似问题中的所有步骤,但都没有奏效。我正在尝试使用 ionic 连接到 Rails API。 我的设置是 Rails 4
调用ActionResult后如何打印结果? 例如,这是我从 View 中进行的调用: 这是我的 ReadLaterController 方法: public ActionRes
我们 3 年前为 Android 构建了一个应用程序。我们需要提交对应用程序的更新,但我们没有原始应用程序(我们正在更新的应用程序。我们的原始开发人员无处可寻)中使用的私钥。 我们如何解决这个问题?!
我正在将 google 的 reCaptcha 添加到我的表单中。问题是即使我已经按照谷歌的说明进行操作。我仍然可以在不重新验证的情况下按提交按钮。任何想法请继承相关的代码片段。 webpage
我的QThread run 方法正在结束,但我无法获得信号。 完整代码如下: 我的线程标题: #ifndef MYTHREAD_H #define MYTHREAD_H #include #incl
我有一个操作列表和一个按钮。 当用户点击按钮时,操作按顺序执行。 每次操作完成时,它都会设置一个标志(更新 UI),并继续执行下一个操作。 如果一个 Action 失败,所有剩余的 Action 将停
我正在寻找类似于 Firebase 的东西 completion block确认我在切换到下一个 ViewController 之前删除了所有 Firebase 回调 ref.removeAllObs
我正在将 ios 应用程序与 rails 服务器集成。在这里,我实现了设计身份验证。当新人从我的应用程序注册时,我在日志中收到以下错误 Processing by Devise::Registrati
我有这种情况: 我得到了用户在启动应用程序时将打开的主要 Activity ,该 Activity 内部是顶部栏中选项卡旁边的 Viewpager,因此用户可以在 4 个 fragment 之间导航。
我有一个应该在后台运行的服务。它在我的应用程序打开时开始,并在我的应用程序被用户关闭时结束。 每当我的应用在后台或屏幕关闭时,我仍然需要运行该服务。 我通过 WakeLock 实现了这一点,但由于某种
在 Firebase 控制台中,函数/日志部分中的最后一条事件消息是“函数执行耗时 60006 毫秒,完成状态:‘超时’”。 “超时”是函数应该完成的状态吗?还是我在代码中遗漏了“到此结束”的内容?
我是一名优秀的程序员,十分优秀!