代码之家  ›  专栏  ›  技术社区  ›  dingo_d

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

  •  2
  • dingo_d  · 技术社区  · 6 年前

    在我的Dockerfile中,我正在尝试下载最新的WordPress版本,但是我在自动更新最新版本号时遇到了问题,所以当新版本的WordPress发布时,我不必手动更改它。

    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 ,我得到了错误

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

    #!/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 .

    1 回复  |  直到 6 年前
        1
  •  2
  •   Sathyajith Bhat ron tornambe    6 年前

    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