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

DockerFile变量值未传递到容器

  •  0
  • ImranRazaKhan  · 技术社区  · 6 年前

    FROM ubuntu:18.04
    
    ENV  DB_SERVER            1.1.1.1
    ENV  DB_SCHEMA            mydb
    ENV  DB_USER              myuser
    ENV  DB_PASSWORD          mypass
    
    RUN /bin/echo $'log4j.appender.DB.URL = jdbc:mysql://$DB_SERVER/$DB_SCHEMA\n\
    log4j.appender.DB.user = $DB_USER\n\
    log4j.appender.DB.password = $DB_PASSWORD\n'\ 
    >> $KARAF_HOME/etc/org.ops4j.pax.logging.cfg
    

    我期望上面的条目被附加到一个带有值的文件中,但是echo只是按原样附加。

    2 回复  |  直到 6 年前
        1
  •  0
  •   johnharris85    6 年前

    使用单引号将阻止对环境变量进行插值。使用双引号和 -e echo (停止将换行符视为文本)。

    FROM ubuntu:18.04
    
    ENV  DB_SERVER            1.1.1.1
    ENV  DB_SCHEMA            mydb
    ENV  DB_USER              myuser
    ENV  DB_PASSWORD          mypass
    
    RUN /bin/echo -e "log4j.appender.DB.URL = jdbc:mysql://$DB_SERVER/$DB_SCHEMA\n\
    log4j.appender.DB.user = $DB_USER\n\
    log4j.appender.DB.password = $DB_PASSWORD\n"\
    >> $KARAF_HOME/etc/org.ops4j.pax.logging.cfg
    

    RUN cat $KARAF_HOME/etc/org.ops4j.pax.logging.cfg 还有一个 CMD cat $KARAF_HOME/etc/org.ops4j.pax.logging.cfg

    log4j.appender.DB.URL = jdbc:mysql://1.1.1.1/mydb
    log4j.appender.DB.user = myuser
    log4j.appender.DB.password = mypass
    
        2
  •  1
  •   Alejandro Galera    6 年前
    • 在图像中可以访问env 生成时间 运行时间
    • 生成时间

    FROM ubuntu:18.04
    
    ARG  DB_SERVER=1.1.1.1
    ARG  DB_SCHEMA=mydb
    ARG  DB_USER=myuser
    ARG  DB_PASSWORD=mypass
    
    RUN /bin/echo $'log4j.appender.DB.URL = jdbc:mysql://${DB_SERVER}/${DB_SCHEMA}\n\
    log4j.appender.DB.user = ${DB_USER}\n\
    log4j.appender.DB.password = ${DB_PASSWORD}\n'\ 
    >> ${BPPM_HOME}/etc/org.ops4j.pax.logging.cfg