【问题标题】:What might be wrong with my Nuxt / Docker / Traefik config?我的 Nuxt / Docker / Traefik 配置可能有什么问题?
【发布时间】:2019-03-11 18:45:47
【问题描述】:

由于某种原因,我无法让它工作。我正在尝试将 /api 转发到 API 容器。

我得到的错误:

nuxt | [6:11:03 PM] 错误:连接 ECONNREFUSED 127.0.0.1:80

nuxt |在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1083:14)

我认为 /api 被重定向到 127.0.0.1:80 但我不知道为什么?

Traefik 仪表板: https://imgur.com/mqTXE9F

nuxt.config.js

...
  axios: {
    baseURL: '/api'
  },
  server: {
    proxyTable: {
      '/api': {
         target: 'http://localhost:1337',
         changeOrigin: true,
         pathRewrite: {
           "^/api": ""
         }
      }
    }
  },
...

docker-compose.yml

version: '3'

services:
  reverse-proxy:
    image: traefik
    command: --api --docker
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - mynet

  nuxt:
    # build: ./app/
    image: "registry.gitlab.com/username/package:latest"
    container_name: nuxt
    restart: always
    ports:
      - "3000:3000"
    command:
      "npm run start"
    networks:
      - mynet
    labels:
      - "traefik.backend=nuxt"
      - "traefik.frontend.rule=PathPrefixStrip:/"
      - "traefik.docker.network=mynet"
      - "traefik.port=3000"

  api:
    build: .
    image: strapi/strapi
    container_name: api
    environment:
      - APP_NAME=strapi-app
      - DATABASE_CLIENT=mongo
      - DATABASE_HOST=db
      - DATABASE_PORT=27017
      - DATABASE_NAME=strapi
      - DATABASE_USERNAME=
      - DATABASE_PASSWORD=
      - DATABASE_SSL=false
      - DATABASE_AUTHENTICATION_DATABASE=strapi
      - HOST=api
      - NODE_ENV=development
    ports:
      - 1337:1337
    volumes:
      - ./strapi-app:/usr/src/api/strapi-app
      #- /usr/src/api/strapi-app/node_modules
    depends_on:
      - db
    restart: always
    networks:
      - mynet
    labels:
      - "traefik.backend=api"
      - "traefik.docker.network=mynet"
      - "traefik.frontend.rule=PathPrefixStrip:/api"
      - "traefik.port=1337"

  db:
    image: mongo
    environment:
      - MONGO_INITDB_DATABASE=strapi
    ports:
      - 27017:27017
    volumes:
      - ./db:/data/db
    restart: always
    networks:
      - mynet

networks:
  mynet:
    external: true

【问题讨论】:

  • 你做了什么?
  • 我会像这样使用 Nuxt 代理(不是 Nuxt 服务器属性)axios.nuxtjs.org/options#proxyproxy: { '/api/': { target: ''http://localhost:1337'', pathRewrite: {'^/api/': ''} } } Nuxt 服务器属性假设您使用的是通用模式或在创建 Nuxt 期间为 Nuxt 选择了一个后端-应用程序。(如果我错了,请有人纠正我)。

标签: docker nuxt.js traefik strapi


【解决方案1】:

我知道这有点晚了,但是您应该从 webpack-dev-server 中删除代理,而是使用您的 api 服务上的标签设置正确的规则。

所以如果你使用的是 Traefik v2,你的 nuxt 服务上的标签应该是

labels:
  - "traefik.http.routers.nuxt.rule=Host(`myhost`)"

那么你的 api 上的标签应该是

labels:
  - "traefik.http.routers.api.rule=Host(`myhost`) && PathPrefix(`/api`)"

【讨论】:

    猜你喜欢
    • 2015-09-22
    • 2021-11-29
    • 2018-01-09
    • 2017-03-08
    • 2014-01-13
    • 2014-04-11
    • 2011-09-11
    • 2013-07-17
    • 1970-01-01
    相关资源
    最近更新 更多