首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用预先存在的应用程序配置devspace的过程

使用预先存在的应用程序配置devspace的过程
EN

Stack Overflow用户
提问于 2020-11-22 10:44:41
回答 2查看 299关注 0票数 0

在这件事上,我对库伯内特斯(和道克)并不陌生。我需要了解使用Devspace迁移我现有的Vue.js应用程序的过程。我已经在运行这个应用程序了,大概,但是我没有连接到

ws://localhost:4000/graphql

或者能够建立起一种蒙戈联系。

MongoServerSelectionError: ECONNREFUSED 127.0.0.1:27017

相关预先存在的package.json入口点

代码语言:javascript
复制
"serve": "vue-cli-service serve -mode development",
"build": "vue-cli-service build",
"apollo": "vue-cli-service apollo:dev --generate-schema",
"apollo:schema:generate": "vue-cli-service apollo:schema:generate",
"apollo:schema:publish": "vue-cli-service apollo:schema:publish",
"apollo:start": "vue-cli-service apollo:start",

app结构

代码语言:javascript
复制
/apollo-server
  context.js  ## Mongo connection made here.
/src
  vue-apollo.js ## Apollo setup (Graphql is setup here.)
Dockerfile
devspace.yaml
package.json

现在,

Dockerfile

代码语言:javascript
复制
FROM node:13.12.0-alpine

# Set working directory
WORKDIR /app

# Add package.json to WORKDIR and install dependencies
COPY package*.json ./
RUN npm install

# Add source code files to WORKDIR
COPY . .

# Application port (optional)
# express server runs on port 3000
EXPOSE 3000

# Debugging port (optional)
# For remote debugging, add this port to devspace.yaml: dev.ports[*].forward[*].port: 9229
EXPOSE 9229

CMD ["npm", "start"]

devspace.yaml

代码语言:javascript
复制
version: v1beta9
images:
  app:
    image: sandbox/practiceapp
    preferSyncOverRebuild: true
    injectRestartHelper: false
    cmd: ["yarn", "serve"]
    appendDockerfileInstructions:
    - USER root
  backend:
    image: sandbox/backend
    preferSyncOverRebuild: true
    injectRestartHelper: false
    entrypoint: ["yarn", "apollo"]
    appendDockerfileInstructions:
    - USER root
deployments:
- name: frontend
  helm:
    componentChart: true
    values:
      containers:
      - image: sandbox/practiceapp
      service:
        ports:
        - port: 8080
- name: backend
  helm:
    componentChart: true
    values:
      containers:
      - image: sandbox/backend
      service:
        ports:
        - port: 4000
        - port: 3000
        - port: 27017
# - name: mongo
#   helm:
#     componentChart: true
#     values:
#       containers:
#       - image: sandbox/mongo
#       service:
#         ports:
#         - port: 27017
dev:
  ports:
  - imageName: app
    forward:
    - port: 8080
  # - imageName: apollo
  #   forward:
  #     port: 3000
  # - imageName: graphql
  #   forward:
  #     port: 4000
  # - imageName: mongo
  #   forward:
  #     port: 27017
  open:
  - url: http://localhost:8080
  - url: http://localhost:4000/graphql
  sync:
  - imageName: app
    excludePaths:
    - .git/
    uploadExcludePaths:
    - Dockerfile
    - node_modules/*
    - '!node_modules/.temp/'
    - devspace.yaml
    onUpload:
      restartContainer: true
profiles:
- name: production
  patches:
  - op: remove
    path: images.app.injectRestartHelper
  - op: remove
    path: images.app.appendDockerfileInstructions
- name: interactive
  patches:
  - op: add
    path: dev.interactive
    value:
      defaultEnabled: true
  - op: add
    path: images.app.entrypoint
    value:
    - sleep
    - "9999999999"

我一直在寻找关于如何包含现有应用程序的服务的信息,但我很难理解。我需要一些指导,如何设置这一点,或在哪里查找。

谢谢你的帮助和时间。

EN

回答 2

Stack Overflow用户

发布于 2020-11-23 22:20:21

从你提供的信息来看,我认为这可能是一个网络问题。请检查您的应用程序是否在所有接口上侦听,而不是只在localhost上侦听,因为这会导致连接被拒绝,如本故障排除指南:https://devspace.sh/cli/docs/guides/networking-domains#troubleshooting所述。

票数 0
EN

Stack Overflow用户

发布于 2020-11-27 09:02:41

解决这个问题的方法是重构我的应用程序的结构,包括deployments中的服务端口和dev.ports中的转发端口。

代码语言:javascript
复制
deployments:
- name: app
  helm:
    componentChart: true
    values:
      containers:
      - image: namespace/frontend
      service:
        name: app-service
        ports:
        - port: 8080
        - port: 4000
dev:
   ports:
   - imageName: app
     forward:
     - port: 8080
     - port: 4000

我的应用程序的最终结构:

代码语言:javascript
复制
./backend
   .dockerignore
   Dockerfile
   package.json
./frontend
   .dockerignore
   Dockerfile
   package.json
devspace.yaml

就连接mongodb而言,我最初是从minikube开始,然后迁移到docker桌面,但由于在docker桌面上使用副本集(本地主机不能被分配为外部ip的两倍),所以无法设置具有外部负载平衡访问权限的无头端口。我使用bitnami的mongodb头盔图表和devspace来完成这个任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64953172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档