Tag: sed

Docker – 文件中基于dynamic正则expression式的sedreplace

我有一个在env_file docker-compose.yml引用的env_file声明的各种环境variables export FOO=bar export FAZ=baz 在容器中的configuration文件中,我引用了这些环境variables: Today is a great day to ${FOO} and ${FAZ} 我希望能够捕获所有以${开头, ${ }结尾的文本(例如${<SOMETHING>} )的实例,然后将其replace为<SOMETHING>键的环境variables。 下面的工程在shell中,但我不能得到这个工作与sed -i对一个文件,或在一个bash脚本。 echo "TODAY IS ${DAY}" | sed -r 's/(<foobar>\$[\w{}]+)/<foobar>/g 环境variablesDAY是“FUNDAY”将产生: "TODAY IS FUNDAY"

什么是更改PostgreSQLconfiguration的可靠方法,尤其是将其数据目录移动到脚本中?

我想要达到什么 为了将一些软件和PostgreSQL一起打包到docker容器中,我想把PostgreSQL的data_directory和所有其他的持久数据一起改成/srv 。 背景信息: PostgreSQL刚刚使用apt-get postgresql服务从来没有开始在这一点上 我的目的是在没有惹麻烦的情况下移动/srv的持久数据。 我不在乎如何实现这一点,设置data_directory似乎最适合我。 关于问题的思考 我可以使用sed来修改postgresql.conf ,例如像这样: $ sed -i 's#^\(data_directory\s*=\s*\).*$#\1/srv/postgresql/main#'\ /etc/postgresql/9.1/main/postgresql.conf 但是如果有更好的方法,我不太喜欢在configuration文件中使用脚本。 我发现一个相当大的perl脚本来修改PostgreSQLconfiguration文件 ,但是我有些害怕embedded这个脚本而不能完全理解它在五分钟内做了什么。 我并不感到奇怪,使用psql和SET SQL命令在运行的系统中进行更改失败: postgres=# set data_directory to '/srv/postgresql/main'; ERROR: parameter "data_directory" cannot be changed without restarting the server 另一方面, pg_config只能打印信息而不能安装。 现在? 通常情况下,有设置选项的方便可靠的工具,PostgreSQL是否也有一个?

了解docker入口脚本

脚本位于这里: https : //github.com/docker-library/ghost/blob/master/docker-entrypoint.sh #!/bin/bash set -e if [[ "$*" == npm*start* ]]; then baseDir="$GHOST_SOURCE/content" for dir in "$baseDir"/*/ "$baseDir"/themes/*/; do targetDir="$GHOST_CONTENT/${dir#$baseDir/}" mkdir -p "$targetDir" if [ -z "$(ls -A "$targetDir")" ]; then tar -c –one-file-system -C "$dir" . | tar xC "$targetDir" fi done if [ ! -e "$GHOST_CONTENT/config.js" ]; then sed -r ' […]

切割/格式化docker服务命令

对不起,不准确的标题,但我实际上是在最简单的方式来削减这个: Docker服务ls 进入这个: docker服务ls切割 尝试了一些-f但不工作。 也许有一些grep / sed / cut的东西,但我没有find一个令人满意的方式… 非常感谢时间

为什么我的sedreplace为&执行失败?

我试图在Linux的Docker容器上运行以下命令,但我得到以下错误: root@instance-0024c639:/etc/java-8-openjdk# sed -is/^assistive_technologies=/#&/ accessibility.properties [1] 1095 sed: -e expression #1, char 28: unterminated `s' command bash: /: Is a directory [1]+ Exit 1 sed -is/^assistive_technologies=/# 我正在运行的文件内容为: root@instance-0024c639:/etc/java-8-openjdk# cat accessibility.properties # # The following line specifies the assistive technology classes # that should be loaded into the Java VM when the AWT is initailized. # […]

在容器中设置ENVvariables不工作,是否在容器运行时执行“/ usr / local / bin”下的每一个?

我在Dockerfile有以下的定义: # This aims to be the default value if -e is not present on the run command ENV HOST_IP=127.0.0.1 … COPY /container-files/etc/php.d/zz-php.ini /etc/php5/mods-available/zz-php.ini RUN ln -s /etc/php5/mods-available/zz-php.ini /etc/php5/apache2/conf.d/zz-php.ini COPY /container-files/init-scripts/setup_xdebug_ip.sh /usr/local/bin/setup_xdebug_ip.sh RUN chmod +x /usr/local/bin/setup_xdebug_ip.sh CMD ["/usr/local/bin/setup_xdebug_ip.sh", "/usr/local/bin/setup_php_settings.sh"] 这是zz-php.ini的相关定义: ; Xdebug [Xdebug] xdebug.remote_enable=true xdebug.remote_host="192.168.3.1" => this should be overwrited by HOST_IP xdebug.remote_port="9001" xdebug.idekey="XDEBUG_PHPSTORM" 这是脚本setup_xdebug_ip.sh的内容: […]

sed:未终止的's'命令 – 找不到需要转义的东西

我很新,使用sed的正则expression式,所以我有一些环境variables,我需要被放置到一个文件,如果find适当的“占位符”。 root@devproc-01:~# printenv PROC_MODCONF=Include "conf.d/modconf.cfg.lua" PROC_MODULES="lastlog"; "firewall"; "message_logging"; 这里是我定义的两个环境variables,下面是我的sed命令,它们是Docker Compose入口点文件的一部分。 sed -is/'{$PROC_MODULES}'/$PROC_MODULES/g /etc/procdev/conf.d/modules.cfg.lua sed -is/'{$PROC_MODCONF}'/$PROC_MODCONF/g /etc/procdev/proc.cfg.lua 但是当这个脚本执行时,我会看到标题中显示的错误: sed: -e expression #1, char 27: unterminated `s' command 我有双重检查,我的占位符variables是确实存在和正确的这两个文件。 这只会发生在这两个替代品,我所有的其他替代品正​​常工作。 :/有什么东西需要逃脱? 谢谢! 按要求,configuration文件的一个片段,以便您可以看到如何显示占位符variables: umask = "027"; Include "conf.d/modules.cfg.lua" {$PROC_MODCONF} Include "conf.d/c2s-s2s.cfg.lua"

Dockerfile:如何用build-arg的replace环境variables中的占位符?

我有一个Web应用程序,我想运行在Docker上进行testing。 应用程序使用数据库作为存储,数据库的configuration保存在环境variables(JSON)中。 下面你可以看到我的Dockerfile中的envvariables定义(另请参见我的方法) ENV CONFIG '{ \ "credentials":{ \ "hostname": "172.17.0.5", \ "password": "PWD", \ "port": "1234", \ "username": "${USER}" \ }, \ "name":"database", \ "tags":[] \ }, \ … 如果我硬编码数据库的所有参数一切正常,但我不想只改变我的Dockerfile,因为数据库的IP地址已经改变。 因此我想使用Docker构build参数。 我已经尝试了两种方法: 直接引用variables(见“$ {USER}”一行) 使用以下命令replace“PWD”的占位符RUN CONFIG=$(echo $CONFIG | sed 's/PWD/'$db_pwd'/g') 第一种方法不会导致replace,因此$ {USER}是$ {USER}。 第二种方法似乎工作(至less在terminal),但似乎variables分配不起作用。 你有什么想法我可以做这个工作? 随意build议其他方法。 我只是不想在我的Dockerfile中有硬编码参数。 谢谢!

将variables从容器开始传递到文件

我在Dockerfile中有以下几行,我希望在应用程序启动之前将configuration文件中的值设置为默认值,并在启动容器时使用-e选项提供可选的设置。 我正在尝试使用Docker的ENV突击队 ENV CONFIG_VALUE default_value RUN sed -i 's/CONFIG_VALUE/'"$CONFIG_VALUE"'/g' CONFIG_FILE CMD command_to_start_app 我在CONFIG_FILE文件中显式地使用了stringCONFIG_VALUE,并且Dockerfile的默认值被正确replace。 但是,当我运行带有-e CONFIG_VALUE=100的容器时,不执行replace,保留在Dockerfile中设置的默认值。 当我做 docker exec -i -t container_name bash 并在容器内echo $CONFIG_VALUE环境variables确实包含所需的值100。

docker运行sed不起作用

我正在接近Docker 。 我创build了一个debootstraping Debian Jessie的图像,我想将contrib部分添加到APT源文件中。 /etc/apt/sources.list内容是: $ docker run some/image cat /etc/apt/sources.list deb http://debian.fastweb.it/debian jessie main deb http://debian.fastweb.it/debian jessie-updates main deb http://security.debian.org/ jessie/updates main 我希望他们成为: deb http://debian.fastweb.it/debian jessie main contrib deb http://debian.fastweb.it/debian jessie-updates main contrib deb http://security.debian.org/ jessie/updates main contrib 所以我跑了这个命令: docker run some/image sed -i 's/main/main contrib/g' /etc/apt/sources.list 哪些出口没有错误; 但不会更新/etc/apt/sources.list内容: $ docker run some/image […]