Docker 嵌套文件夹中带cloudbuild.yaml的云构建-构建失败
我正在尝试自动化一个项目的一部分,我理想的部署和忘记。该项目由一个XML解析器和一个小型网站组成。目前,文件夹结构如下所示:Docker 嵌套文件夹中带cloudbuild.yaml的云构建-构建失败,docker,google-cloud-platform,google-cloud-build,Docker,Google Cloud Platform,Google Cloud Build,我正在尝试自动化一个项目的一部分,我理想的部署和忘记。该项目由一个XML解析器和一个小型网站组成。目前,文件夹结构如下所示: . ├── init.sql └── parser ├── cloudbuild.yaml ├── cloud_func │ └── main.py ├── Dockerfile ├── feed_parse.py ├── get_so.py ├── requirements.txt └── utils.
.
├── init.sql
└── parser
├── cloudbuild.yaml
├── cloud_func
│ └── main.py
├── Dockerfile
├── feed_parse.py
├── get_so.py
├── requirements.txt
└── utils.py
FROM python:3.7-alpine
RUN apk update \
&& apk add gcc python3-dev musl-dev libffi-dev \
&& apk del libressl-dev \
&& apk add openssl-dev
COPY requirements.txt /
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt
ADD . /parser
WORKDIR /parser/
RUN mkdir -p certs
# Set env variables from secrets
ARG CLIENT_CERT
ENV CSQL_CERT=${CLIENT_CERT}
ARG CLIENT_KEY
ENV CSQL_KEY=${CLIENT_KEY}
ARG SERVER_CA
ENV CSQL_CA=${SERVER_CA}
ARG SERVER_PW
ENV CSQL_PW=${SERVER_PW}
ARG SERVER_HOST
ENV CSQL_IP=${SERVER_HOST}
# Get ssl certs in files
RUN echo $CLIENT_CERT > ./certs/ssl_cert.pem \
&& echo $CLIENT_KEY > ./certs/ssl_key.pem \
&& echo $SERVER_CA > ./certs/ssl_ca.pem
CMD python get_so.py
现在,我可以正确设置触发器以查看/parser/cloudbuild.yaml
,但是使用以下命令生成映像会引发错误:
build . --build-arg "CLIENT_CERT=$CSQL_CERT CLIENT_KEY=$CSQL_KEY SERVER_CA=$CSQL_CA SERVER_PW=$CSQL_PW SERVER_HOST=$CSQL_IP" -t gcr.io/and-reporting/appengine/so-parser:latest
在我看来,gcp很难找到我的Dockerfile
,它位于同一个文件夹cloudbuild.yaml
中。我错过了什么 为完整起见,Dockerfile如下所示:
.
├── init.sql
└── parser
├── cloudbuild.yaml
├── cloud_func
│ └── main.py
├── Dockerfile
├── feed_parse.py
├── get_so.py
├── requirements.txt
└── utils.py
FROM python:3.7-alpine
RUN apk update \
&& apk add gcc python3-dev musl-dev libffi-dev \
&& apk del libressl-dev \
&& apk add openssl-dev
COPY requirements.txt /
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt
ADD . /parser
WORKDIR /parser/
RUN mkdir -p certs
# Set env variables from secrets
ARG CLIENT_CERT
ENV CSQL_CERT=${CLIENT_CERT}
ARG CLIENT_KEY
ENV CSQL_KEY=${CLIENT_KEY}
ARG SERVER_CA
ENV CSQL_CA=${SERVER_CA}
ARG SERVER_PW
ENV CSQL_PW=${SERVER_PW}
ARG SERVER_HOST
ENV CSQL_IP=${SERVER_HOST}
# Get ssl certs in files
RUN echo $CLIENT_CERT > ./certs/ssl_cert.pem \
&& echo $CLIENT_KEY > ./certs/ssl_key.pem \
&& echo $SERVER_CA > ./certs/ssl_ca.pem
CMD python get_so.py
编辑:以及我用于构建的cloudbuild.yaml
steps:
# Building image
- name: 'gcr.io/cloud-builders/docker'
args: [
'build',
'-f',
'Dockerfile',
'--build-arg',
'CLIENT_CERT=$$CSQL_CERT CLIENT_KEY=$$CSQL_KEY SERVER_CA=$$CSQL_CA SERVER_PW=$$CSQL_PW SERVER_HOST=$$CSQL_IP',
'-t',
'gcr.io/$PROJECT_ID/appengine/so-parser:latest',
'.'
]
secretEnv: ['CSQL_CERT', 'CSQL_KEY', 'CSQL_CA', 'CSQL_PW', 'CSQL_IP']
# Push Images
# - name: 'gcr.io/cloud-builders/docker'
# args: ['push', 'gcr.io/$PROJECT_ID/appengine/so-parser:latest']
secrets:
- kmsKeyName: projects/myproject/locations/global/keyRings/so-jobs/cryptoKeys/board
secretEnv:
CSQL_CERT: [base64 string]
CSQL_KEY: [base64 string]
CSQL_CA: [base64 string]
CSQL_PW: [base64 string]
CSQL_IP: [base64 string]
由于
cloudbuild.yaml
文件中的点,docker无法找到Dockerfile
目录中的parser
文件:
steps:
- name: "gcr.io/cloud-builders/docker"
args: ["build", "-t", "gcr.io/$PROJECT_ID/mynodejs:$SHORT_SHA", "./parser"]
如果要提及dockerfile名称: 步骤:
看起来问题在于cloudbuild文件、pl共享that@RajeshGupta补充了主要问题。非常感谢,非常有魅力。
-f./parser/Dockerfile
是否等效?@AndreaDodet不确定,没有这样使用它