我正在创建一个使用自定义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/