我正在创建一个使用自定义Flex环境在Google App Engine上运行的应用程序。此应用程序使用几个(相对)符号链接(symbolic link),这些符号链接(symbolic link)指向项目中的其他目录。但是当我部署应用程序时,这些符号链接(symbolic link)会以某种方式被忽略。

似乎gcloud工具在构建和部署应用程序之前将源上下文(即我项目中的所有文件)发送到google容器构建器:

$ gcloud --project=my-project --verbosity=info app deploy
(...)
Beginning deployment of service [default]...
Building and pushing image for service [default]
INFO: Uploading [/tmp/tmpZ4Jha_/src.tgz] to [eu.gcr.io/my-project/appengine/default.20171212t160803:latest]
Started cloud build [some-uid].

如果提取.tgz文件的内容,则可以看到项目中的所有文件和目录都在那里。除了指向目录的符号链接(symbolic link)(包括指向文件的符号链接(symbolic link))。因此,源上下文缺少到目录的所有符号链接(symbolic link)。

不使用符号链接(symbolic link)不是一种选择,因此有人知道如何在发送到google的源上下文中包括指向目录的符号链接(symbolic link)吗?

尽管我认为这无关紧要,但这是app.yaml的内容:
env: flex
runtime: custom

runtime_config:
  document_root: docroot

manual_scaling:
  instances: 1

resources:
  cpu: 2
  memory_gb: 2
  disk_size_gb: 10

最佳答案

我通过从临时目录部署python云功能并使用tar(在Mac上)将文件包含在符号链接(symbolic link)目录中的方法来解决此问题:

  tar hc --exclude='__pycache__' {name} | tar x -C {tmpdirname}

关于linux - App Engine会忽略指向目录的符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47776608/

10-13 07:41