Dockerfile中的参数未作为执行命令传递

问题描述 投票:2回答:1

在我的Dockerfile中,我正在尝试下载其中没有任何内容的最新WordPress版本,但是我在自动化最新版本号时遇到了麻烦,因此我不必在新版本的WordPress出现时手动更改它。

在我的Dockerfile中

ARG LATESTWPVER="$(curl -s https://api.wordpress.org/core/version-check/1.5/ | head -n 4 | tail -n 1)"
ADD $(https://downloads.wordpress.org/release/wordpress-$LATESTWPVER-no-content.zip) /var/www/latest.zip

但问题是我的LATESTWPVER不是4.9.8,我得到了错误

ADD失败:stat /var/lib/docker/tmp/docker-builder962069305/$(https:/downloads.wordpress.org/release/wordpress-$(curl-s https:/api.wordpress.org/core/version- check / 1.5 / | head -n 4 | tail -n 1)-no-content.zip):没有这样的文件或目录

它传递整个命令,我希望得到该命令的输出。

在我的shell文件中

#!/bin/bash

WP_LATEST="$(curl -s https://api.wordpress.org/core/version-check/1.5/ | head -n 4 | tail -n 1)"
echo $WP_LATEST

将返回数字4.9.8

从错误中,我猜你只能为变量赋值,但不能执行它。有没有办法执行命令并将其分配给变量并将其作为参数传递?

wordpress docker dockerfile
1个回答
2
投票

Dockerfile不是shell或构建脚本,因此它不会执行您在ARG中传递的内容。有一种解决方法 - 将版本定义为ARG并在构建期间传递。

Dockerfile:

--

FROM ubuntu:latest
ARG LATESTWPVER
RUN echo $LATESTWPVER
ADD https://downloads.wordpress.org/release/wordpress-$LATESTWPVER-no-content.zip /var/www/latest.zip

docker build --build-arg LATESTWPVER=`curl -s https://api.wordpress.org/core/version-check/1.5/ | head -n 4 | tail -n 1` .
Sending build context to Docker daemon  6.656kB
Step 1/4 : FROM ubuntu:latest
 ---> 113a43faa138
Step 2/4 : ARG LATESTWPVER
 ---> Using cache
 ---> 64f47dcfe7fa
Step 3/4 : RUN echo $LATESTWPVER
 ---> Running in eb5fdd005d77
4.9.8
Removing intermediate container eb5fdd005d77
 ---> 1015629b927e
Step 4/4 : ADD https://downloads.wordpress.org/release/wordpress-$LATESTWPVER-no-content.zip /var/www/latest.zip
Downloading [==================================================>]  7.118MB/7.118MB

 ---> 72f0d3790e51
Successfully built 72f0d3790e51
© www.soinside.com 2019 - 2024. All rights reserved.