构建Docker镜像时Dockerfile报语法错误找不到=的问题求助
Docker镜像构建ENV语法错误解决方案
报错的核心原因是ENV指令书写格式不规范,和环境变量取值为空本身无关。
错误出现在Dockerfile第3行的ENV SSL_CERT= "":=和后续的空引号之间存在多余空格,Docker解析ENV指令时要求严格遵循变量名=值的连续格式,等号两侧不允许出现空格,因此触发了can't find = in "\"\""的语法错误。
修正后的完整Dockerfile如下:
FROM java:8 ADD build/libs/selfservingportal.jar selfservingportal.jar ENV SSL_CERT="" ENV SSL_KEY="" ENV DEVSECOPS_PLATFORM_TERRAFORM_API_TOKEN="" ENV DEVSECOPS_PLATFORM_TERRAFORM_USER="" ENV DEVSECOPS_PLATFORM_TERRAFORM_BASEURL="" ENV DEVSECOPS_PLATFORM_CREATED_TERRAFORM_API_TOKEN="" ENV GCP_CAPTCHA_TOKEN="" ENV JENKINS_BASE="" ENV JENKINS_EXTENSION="" ENV JENKINS_APPLICATIONJOB="" ENV JENKINS_INFRASTRUCTUREJOB="" ENV DEVSECOPS_PLATFORM_CREATED_TERRAFORM_USER="" ENV ACCESS_KEY="" ENV SECRET_ACCESS_KEY="" ENV AWS_REGION="" ENV AWS_ACCESSKEY="" ENV AWS_SECRETKEY="" ENV AZURE_CLIENT_ID="" ENV AZURE_CLIENT_SECRET_KEY="" ENV AZURE_SUBSCRIPTION_ID="" ENV AZURE_TENANT_ID="" ENTRYPOINT ["java","-jar","selfservingportal.jar"]
补充使用注意事项:
- 空值环境变量的定义本身是合法的,只要保证
变量名=值格式连续即可 - 如果环境变量值包含空格、特殊字符,需要用引号包裹时,引号必须紧跟等号,不能留空格
- 旧版Docker也支持
ENV 变量名 值的写法,但不带等号的写法不支持同时定义多个变量,推荐统一使用带等号的规范写法
内容的提问来源于stack exchange,提问作者Kyle McCuller
相关产品推荐
相关产品推荐

