parse-dashboard w / docker-compose:无法连接到服务器

时间:2018-01-25 12:04:26

标签: docker docker-compose parse-server parse-dashboard

我使用docker-compose配置了一个小集群,包括parse-server,mongo和parse-dashboard:

  version: "3"
  services:
  myappdb:
    image: mongo
    ports:
      - 27017:27017
  myapp-parse-server:
    image: parseplatform/parse-server
    environment:
      - PARSE_SERVER_MASTER_KEY=xxxx
      - PARSE_SERVER_APPLICATION_ID=myapp
      - VERBOSE=0
      - PARSE_SERVER_DATABASE_URI=mongodb://myappdb:27017/dev
      - PARSE_SERVER_URL=http://myapp-parse-server:1337/parse
    depends_on:
      - myappdb
    ports:
      - 5000:1337
  parse-dashboard:
    image: parseplatform/parse-dashboard
    ports:
      - 5001:4040
    environment:
      - PARSE_DASHBOARD_ALLOW_INSECURE_HTTP=1
      - PARSE_DASHBOARD_SERVER_URL=http://myapp-parse-server:1337/parse
      - PARSE_DASHBOARD_APP_ID=myapp
      - PARSE_DASHBOARD_MASTER_KEY=xxxx
      - PARSE_DASHBOARD_USER_ID=admin
      - PARSE_DASHBOARD_USER_PASSWORD=xxxx

尽可能尝试,但是,我无法使用已部署的解析仪表板连接到myapp-parse-server。在我使用浏览器(在localhost:5001)登录仪表板后,仪表板应用程序通知我“无法连接到服务器”。

我已经尝试从解析仪表板容器中ping主机'myapp-parse-server',它可以看到容器就好了。同样,它可以看到端点http://myapp-parse-server:1337/parse; wget返回预期的403。

如果我使用在我的主机上运行的parse-dashboard副本,它对http://localhost:5000/parse的效果很好。因此,从我的主机到解析服务器的转发端口可以工作。

我还尝试使用安装在容器中的parse-dashboard-config.json配置仪表板。得到完全相同的结果。

我不知道我在这里做错了什么。任何人都可以对此有所了解吗?

1 个答案:

答案 0 :(得分:1)

您的docker-compose文件看起来有些问题:

  1. PARSE_SERVER_URL指向 myapp-parse-server ,它应该指向http://localhost:1337/parse(除非您以某种方式修改了容器上的主机文件,但我看不到它)

  2. 您的myapp-parse-server应链接使用链接

  3. 这是我在how to deploy parse-server to google container engine上写的一个博客中的docker-compose文件示例

    version: "2"
    services:
    # Node.js parse-server application image
      app:
        build: ./app
        command: npm start -- /parse-server/config/config.json
        container_name: my-parse-app
        volumes:
        - ./app:/parse-server/
        - /parse-server/node_modules
        ports:
        - "1337:1337"
        links:
        - mongo
    # MongoDB image 
    
      mongo:
        image: mongo
        container_name: mongo-database
        ports:
        - "27017:27017"
        volumes_from:
        - mongodata
    # MongoDB image volume for persistence
      mongodata:
        image: mongo
        volumes:
        - ./data/db:/data/db
        command:
        - --break-mongo

    您可以从上面的示例中看到我使用链接,还可以为数据库磁盘创建和附加卷。

    另外,我个人认为最好使用配置文件运行parse-server以解耦所有配置,以便我的配置文件如下所示(在我的docker compose中你可以看到我正在使用config运行解析服务器文件,而不是env变量)

    {
    "databaseURI": "mongodb://localhost:27017/my-db",
    "appId": "myAppId",
    "masterKey": "myMasterKey",
    "serverURL": "http://localhost:1337/parse",
    "cloud": "./cloud/main.js",
    "mountPath": "/parse",
    "port": 1337
    }
    

    最后,在我的解析 - 仪表板图像中,我还使用配置文件,只需将其创建为卷,并使用我自己的替换默认配置文件。由于我的博客中未涵盖此步骤,因此您的最终docker-compose文件应如下所示:

    version: "2"
    services:
    # Node.js parse-server application image
      app:
        build: ./app
        command: npm start -- /parse-server/config/config.json
        container_name: my-parse-app
        volumes:
        - ./app:/parse-server/
        - /parse-server/node_modules
        ports:
        - "1337:1337"
        links:
        - mongo
    # MongoDB image 
    
      mongo:
        image: mongo
        container_name: mongo-database
        ports:
        - "27017:27017"
        volumes_from:
        - mongodata
    # MongoDB image volume for persistence
      mongodata:
        image: mongo
        volumes:
        - ./data/db:/data/db
        command:
        - --break-mongo
        
      dashboard:
        image: parseplatform/parse-dashboard:1.1.0
        volumes:
          - ./dashboard/dashboard-config.json:/src/Parse-Dashboard/parse-dashboard-config.json   
        environment:
          PORT: 4040
          PARSE_DASHBOARD_ALLOW_INSECURE_HTTP: 1
          ALLOW_INSECURE_HTTP: 1
          MOUNT_PATH: "/parse"

    parse-dashboard.json(配置文件)应为:

    {     “应用”: [       {         “serverURL”:“http://localhost:3000/parse”,         “appId”:“myMasterKey”,         “masterKey”:“myMasterKey”,         “appName”:“我的应用”       }
        ]     “用户”:[       {         “用户”:“myuser”,         “通过”:“mypassword”       }     ]     “useEncryptedPasswords”:false   }

    我知道它有点长,所以我真的鼓励你阅读一系列博客。

    希望它会对你有所帮助。