How to upload a Google App Engine (Go) project in a different folder than the app.yaml

╄→尐↘猪︶ㄣ 提交于 2019-12-20 06:09:36

问题


My project has the following structure:

| appengine
|---- app.yaml
|---- myScript.go
| bower_components
|----|...
| build
|----|images
|----|----|branding
|----|----|---- favicon.ico
|----|styles
|----|----|*.css
|----|index.html
| src
| ...

I would like to upload the entire content of the build folder when running goapp deploy appengine.

My app.yaml looks like this:

application: myProject
version: 0-1
runtime: go
api_version: go1

handlers:
- url: /(.*\.(gif|png|jpg|ico|js|css))
  static_files: ../build/\1
  upload: ../build/(.*\.(gif|png|jpg|ico|js|css))

- url: /.*
  script: _go_app

and myScript.go looks like this:

package myProject

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func init() {
    http.HandleFunc("/", handler)
}

func handler(w http.ResponseWriter, r *http.Request) {
    site, err := ioutil.ReadFile("../build/index.html")

    if err != nil {
        panic(err)
    }

    fmt.Fprint(w, string(site))
}

When I run goapp serve appengine, the website displays properly. However, when I try to deploy it, it only clones two files, i.e. the ones inside the appengine folder.


回答1:


You can preserve your desired app structure with 3rd party code residing outside your GAE app code directory yet still be able to upload the 3rd party code together with your GAE app code by just symlinking the 3rd party code files/dirs inside the GAE app dir in the desired locations.

The GAE upload/deploy utilities know to replace the symlinks and upload the actual files/dirs the symlinks point to instead, in the respective locations.

Some other GAE-related scenarios in which the symlink technique can be applied:

  • Sharing entities between App Engine modules
  • How can I share files (HTML templates) between App Engine modules?
  • Do I need to copy `skip_files` across multiple YAML files?
  • How do I access a vendored library from a module in Python Google App Engine?
  • Can a default service/module in a Google App Engine app be a sibling of a non-default one in terms of folder structure?


来源:https://stackoverflow.com/questions/35230998/how-to-upload-a-google-app-engine-go-project-in-a-different-folder-than-the-ap

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!