Skaffold Kubernetes 不显示 React 更改
Skaffold Kubernetes does not display React changes
问题:
当 运行 skaffold 和更新监视文件时,我看到文件同步更新发生并且 nodemon 重新启动服务器,但刷新页面没有显示更改。直到我完全停止 skaffold 并重新启动后,我才看到变化。
Syncing 1 files for test/dev-client:e9c0a112af09abedcb441j4asdfasfd1cf80f2a9bc80342fd4123f01f32e234cfc18
Watching for changes every 1s...
[client-deployment-656asdf881-m643v client] [nodemon] restarting due to changes...
[client-deployment-656asdf881-m643v client] [nodemon] starting `node bin/server.js`
设置:
我有一个简单的微服务应用程序。它有一个服务器端(flask/python)和一个客户端(反应),可以快速处理开发服务器。我打开了 nodemon,并将 legacy watch 标志设置为 true(对于 Chokidar 轮询)。在开发中,我通过 Docker 使用 Kubernetes for Mac.
代码:
我很高兴 post 我的代码可以提供帮助。让我知道哪些是最需要的。
这是一些开场白:
Skaffold.yaml:
apiVersion: skaffold/v1beta7
kind: Config
build:
local:
push: false
artifacts:
- image: test/dev-client
docker:
dockerfile: Dockerfile.dev
context: ./client
sync:
'**/*.css': .
'**/*.scss': .
'**/*.js': .
- image: test/dev-server
docker:
dockerfile: Dockerfile.dev
context: ./server
sync:
'**/*.py': .
deploy:
kubectl:
manifests:
- k8s-test/client-ip-service.yaml
- k8s-test/client-deployment.yaml
- k8s-test/ingress-service.yaml
- k8s-test/server-cluster-ip-service.yaml
- k8s-test/server-deployment.yaml
来自Package.json的相关部分:
"start": "nodemon -L bin/server.js",
Dockerfile.dev(客户端):
# base image
FROM node:10.8.0-alpine
# setting the working directory
# may have to run this depending on environment
# RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# add '/usr/src/app/node_modules/.bin' to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH
# install and cache app depencies
COPY package.json /usr/src/app/package.json
RUN npm install
# copy over everything else
COPY . .
# start the app.
CMD ["npm", "run", "start"]
原来我使用了错误的文件同步模式。 **/*.js 没有正确同步目录。
改变后
sync:
'**/*.css': .
'**/*.scss': .
'**/*.js': .
到
sync:
'***/*.css': .
'***/*.scss': .
'***/*.js': .
它立即开始工作。
更新:
在最新版本的 skaffold 上,这种模式不再起作用,因为 skaffold 默认放弃扁平化。您现在可以使用 **/* 模式并获得相同的结果。
问题:
当 运行 skaffold 和更新监视文件时,我看到文件同步更新发生并且 nodemon 重新启动服务器,但刷新页面没有显示更改。直到我完全停止 skaffold 并重新启动后,我才看到变化。
Syncing 1 files for test/dev-client:e9c0a112af09abedcb441j4asdfasfd1cf80f2a9bc80342fd4123f01f32e234cfc18
Watching for changes every 1s...
[client-deployment-656asdf881-m643v client] [nodemon] restarting due to changes...
[client-deployment-656asdf881-m643v client] [nodemon] starting `node bin/server.js`
设置:
我有一个简单的微服务应用程序。它有一个服务器端(flask/python)和一个客户端(反应),可以快速处理开发服务器。我打开了 nodemon,并将 legacy watch 标志设置为 true(对于 Chokidar 轮询)。在开发中,我通过 Docker 使用 Kubernetes for Mac.
代码:
我很高兴 post 我的代码可以提供帮助。让我知道哪些是最需要的。
这是一些开场白:
Skaffold.yaml:
apiVersion: skaffold/v1beta7
kind: Config
build:
local:
push: false
artifacts:
- image: test/dev-client
docker:
dockerfile: Dockerfile.dev
context: ./client
sync:
'**/*.css': .
'**/*.scss': .
'**/*.js': .
- image: test/dev-server
docker:
dockerfile: Dockerfile.dev
context: ./server
sync:
'**/*.py': .
deploy:
kubectl:
manifests:
- k8s-test/client-ip-service.yaml
- k8s-test/client-deployment.yaml
- k8s-test/ingress-service.yaml
- k8s-test/server-cluster-ip-service.yaml
- k8s-test/server-deployment.yaml
来自Package.json的相关部分:
"start": "nodemon -L bin/server.js",
Dockerfile.dev(客户端):
# base image
FROM node:10.8.0-alpine
# setting the working directory
# may have to run this depending on environment
# RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# add '/usr/src/app/node_modules/.bin' to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH
# install and cache app depencies
COPY package.json /usr/src/app/package.json
RUN npm install
# copy over everything else
COPY . .
# start the app.
CMD ["npm", "run", "start"]
原来我使用了错误的文件同步模式。 **/*.js 没有正确同步目录。
改变后
sync:
'**/*.css': .
'**/*.scss': .
'**/*.js': .
到
sync:
'***/*.css': .
'***/*.scss': .
'***/*.js': .
它立即开始工作。
更新: 在最新版本的 skaffold 上,这种模式不再起作用,因为 skaffold 默认放弃扁平化。您现在可以使用 **/* 模式并获得相同的结果。