我有一个 Django后端和一个 Angular前端,我正试图将它们都部署到Google App Engine 标准应用中作为同一个应用中的两项服务。
目录如下:
-backend
--cloudbuild.yaml
--app.yaml
-- ...
-frontend
--cloudbuild.yaml
--app.yaml
-- ...
-cloudbuild.yaml
主要cloudbuild.yaml
浏览每个文件夹并查找cloudbuild.yaml
文件并提交构建文件:
steps:
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
args:
- '-c'
- |
for d in */; do
config="${d}cloudbuild.yaml"
if [[ ! -f "${config}" ]]; then
continue
fi
echo "Building $d ... "
(
gcloud builds submit $d --config=${config}
) &
done
wait
当我将代码推送到我的Github存储库时,它们会成功部署 。但是,两个日志都显示如下内容:
Step #2: Beginning deployment of service [default]...
Step #2: #============================================================#
Step #2: #= Uploading 0 files to Google Cloud Storage =#
Step #2: #============================================================#
Step #2: File upload done.
Step #2: Updating service [default]...
Step #2: ................................done.
Step #2: Setting traffic split for service [default]...
Step #2: .....done.
Step #2: Deployed service [default] to [https://thisapp.appspot.com]
因此,似乎其中一项覆盖了另一项作为默认服务。当我进入服务页面时,只有一项服务是默认服务。
我知道我们首先必须部署默认服务,然后再部署其余服务。但是我认为,既然主要cloudbuild.yaml
一次提交了构建,那么将有一个默认服务,第二个构建将创建第二个服务。
另外两个cloudbuild.yaml
文件如下:
steps:
# Install node packages
- name: 'gcr.io/cloud-builders/npm'
args: [ 'install' ]
# Build productive files
- name: 'gcr.io/cloud-builders/npm'
args: [ 'run', 'build', '--prod']
# Deploy to google cloud app egnine
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy', '--version=prod']
steps:
- name: 'python:3.7'
entrypoint: python3
args: ['-m', 'pip', 'install', '-t', '.', '-r', 'requirements.txt']
- name: 'python:3.7'
entrypoint: python3
args: ['./manage.py', 'collectstatic', '--noinput']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy', '--version=prod']
如果您能帮助我,我将不胜感激。
谢谢
答案 0 :(得分:1)
之所以会这样,是因为您的app.yaml
文件中没有提供service
标签。如果未提供服务标签,则该服务将部署为default
服务。例如当您部署前端时,它将被部署为默认服务。然后部署您的后端,它也将被部署为默认服务,以覆盖现有的默认服务。反之亦然。
在前端的service
中添加app.yaml
标记:
service: frontend
runtime: nodejs10
您可以将后端保留为默认服务,即后端的app.yaml中没有服务标签