在我的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
,并且出现了错误
添加失败:stat /var/lib/docker/tmp/docker-builder962069305/$(https:/downloads.wordpress.org/release/wordpress-$(curl -s https:/api.wordpress.org/core /version-check/1.5/ |头-n 4 |尾-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
。
由于错误,我猜测您只能将某些内容分配给变量,而不能执行它。有没有一种方法可以执行命令并将其分配给变量并将其作为参数传递?
答案 0 :(得分: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