有一些类似的问题,但他们没有回答为什么node_modules
docker 在 repo 中创建空目录,即使 dockerfile 设置为在容器中保存 node_modules?
我很想知道为什么在主机上创建目录为空,假设纱线已经在容器内安装了包node_modules
以及如何避免它。
## Dockerfile
FROM node:8.11.4-alpine
RUN apk update && apk add yarn
RUN yarn global add nodemon
WORKDIR /usr/app
COPY package.json yarn.lock /usr/app/
RUN yarn
EXPOSE 3000
Run Code Online (Sandbox Code Playgroud)
## docker-compose.yml
version: "3.2"
services:
app:
build:
context: .
dockerfile: Dockerfile
command: nodemon index.js
volumes:
- .:/usr/app
- /usr/app/node_modules
ports:
- "3000:3000"
Run Code Online (Sandbox Code Playgroud) 我想对MicroK8做两件事:
我的最终目标是创建一个位于Ubuntu主机上的单节点Kubernetes集群,然后使用入口将不同的域路由到服务中各自的Pod。
在过去的几天里,我一直在尝试使用Microk8s进行此操作,但是我无法解决这个问题。
到目前为止,我得到的最好的结果是使用MetalLB创建负载均衡器。但这要求我使用本地网络上可用的免费IP地址,而不要使用主机IP地址。
我还启用了,default-http-backend
并尝试导出和编辑这些配置文件,但均未成功。
作为示例,Minikube
一旦启用了入口添加功能,它将可以正常工作。此示例显示了群集IP上端口80处的基本Nginx服务器映像:
# ingress-service.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
# - host: nginx.ioo
- http:
paths:
- path: /
backend:
serviceName: nginx-cluster-ip-service
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
component: nginx
template:
metadata:
labels:
component: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: …
Run Code Online (Sandbox Code Playgroud) 如果您正在管理入口服务(如下例所示),是否可以添加其他主机/服务(例如 echo3.example.com),而不是更新下面的入口文件,而无需应用原始版本的更新版本文件?
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: echo-ingress
spec:
rules:
- host: echo1.example.com
http:
paths:
- backend:
serviceName: echo1
servicePort: 80
- host: echo2.example.com
http:
paths:
- backend:
serviceName: echo2
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
# NEW HOST/SERVICE
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: echo-ingress
spec:
rules:
- host: echo3.example.com ### <= `echo3` addeded
http:
paths:
- backend:
serviceName: echo3
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以应用这个新主机而不需要扩展旧文件?
我正在学习如何使用 terraform 在 DO 上创建 k8s 集群,我一直在尝试获取ID
我创建的单个 K8s 节点,并从负载均衡器中引用它。
这样做的主要原因是我可以在.tf
文件中声明 FQDN。
首先,这是集群声明:
variable "digitalocean_token" {}
provider "digitalocean" {
token = "${var.digitalocean_token}"
}
resource "digitalocean_kubernetes_cluster" "foo" {
name = "foo"
region = "nyc1"
version = "1.12.1-do.2"
node_pool {
name = "woker-pool"
size = "s-1vcpu-2gb"
node_count = 1
}
}
Run Code Online (Sandbox Code Playgroud)
这是负载均衡器声明:
resource "digitalocean_loadbalancer" "foo" {
name = "k8s-lb.nyc1"
region = "nyc1"
forwarding_rule {
entry_port = 80
entry_protocol = "http"
target_port = 80
target_protocol = "http"
}
droplet_ids = …
Run Code Online (Sandbox Code Playgroud) 我应该期望枚举类型自动解析还是仅存在类型以限制选项?
给定以下 GraphQL Schema:
type Job {
description: String!
status: Status!
}
enum Status {
PENDING_REVIEW
PENDING_APPROVAL
APPROVED
}
Run Code Online (Sandbox Code Playgroud)
和一个看起来像这样的查询:
query job {
description
status
}
Run Code Online (Sandbox Code Playgroud)
如果我的数据库返回以下内容:
{ "description": "Some irrelevant job description", "status": 1 }
Run Code Online (Sandbox Code Playgroud)
我希望 GraphQL 返回:
{ "description": "Some irrelevant job description", "status": "PENDING_APPROVAL" }
Run Code Online (Sandbox Code Playgroud)
我是否设置错误,或者这种预期行为是否需要我为 status
const getQuestionStatus = ({ status }) => ['PENDING_REVIEW', 'PENDING_APPROVAL', 'APPROVED'][status];
Run Code Online (Sandbox Code Playgroud) 是否可以在 Android Capacitor 应用程序上设置默认来源而https://example.org
不是标准http://localhost
?
Terraform Kubernetes 不允许使用除apiVersion: v1
. 但是我想通过使用null_resource
配置器运行kubectl apply -f ...
和kubectl delete -f ...
(使用when = "destroy"
)来解决这个问题。
我已经尝试使用 kubernetes apply EOF 模式让它工作,但还没有管理它。
这是我到达的地方,但似乎|
是非法字符。
也希望我可以将 yaml 字符串提取到一个多行变量中,这样我就不必在 null 资源中重复它。
resource "null_resource" "res_name" {
provisioner {
command = <<EOF | kubectl apply -f -
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: some-ingress-name
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: subdomain.example.com
http:
paths:
- backend:
serviceName: some-cluster-ip-service
servicePort: 80
}
provisioner {
when = "destroy"
command …
Run Code Online (Sandbox Code Playgroud) 我想将 env vars 传递到exec
命令中。
到目前为止,我已经尝试了以下
SOME_VAR="A String"
kubectl exec -it a-pod-name -- sh -c 'env NEW_VAR=$SOME_VAR; echo $NEW_VAR > some-file-name.txt'
Run Code Online (Sandbox Code Playgroud)
我意识到kubectl cp
如果我想复制文件,我可以使用,但这不适合我的用例。
如果我想创建一个foreach
循环,将每一个玩家添加到A队或B队
foreach ( $selectedplayers as $selectedplayer ) {
TeamA[] = $selectedplayer;
$selectedplayer++;
TeamB[] = $selectedplayer;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以用for
循环来做,但有兴趣看看是否可以这样做.
我在循环中有一个if语句.它最初设置为false,所以我在循环的第一次运行时在文件中插入一个时间戳.
我似乎无法得到以下正确评估.
$ConnectionIsCurrently=false
if ! [ $ConnectionIsCurrently ]; then
# changing false to true so this only occurs once.
$ConnectionIsCurrently=true
fi
Run Code Online (Sandbox Code Playgroud)
这是完整的循环:
while [ $i -le $NoOfTests ]; do
ping -c1 -t1 www.google.ie > /dev/null
if [ $? = 0 ]; then
ConTestPASSCount=$((ConTestPASSCount+1))
if ! [ $ConnectionIsCurrently ]; then
printf 'PASSED AT: '
date "+%s"
printf 'PASSED AT: ' >> $directory$LogFile
date "+%s" >> $directory$LogFile
ConnectionIsCurrently=true
fi
echo "PASSCount $ConTestPASSCount"
else
ConTestFAILCount=$((ConTestFAILCount+1))
if [ $ConnectionIsCurrently ]; then
printf 'FAILED AT: …
Run Code Online (Sandbox Code Playgroud) 使用javascript是否可以console.log
列出.prototype
与给定类型的对象相关联的属性?
我正在使用Firebase Cloud-Firestore,想查看原型中存在的用于调用数据库的内容。
例如,db调用返回类型为的对象QuerySnapshot { ... }
。我想看看存在什么QuerySnapshot.prototype
。
我可以使用来映射返回的值.map
,但是如果我控制台注销该对象,则它不是数组,因此大概是它继承自原型的自定义.map吗?