【问题标题】:Why does a sed command work interactively but not in my script? [Updated] [duplicate]为什么 sed 命令可以交互工作,但不能在我的脚本中工作? [更新] [重复]
【发布时间】:2020-04-27 03:24:36
【问题描述】:

我正在创建一个 Docker 映像,在其中使用 sed 修改两个参数,但是当我创建映像并检查要修改的文件时,它保持不变。

如果我以交互方式运行 sed 命令,它就可以工作。为什么?有人可以帮我制作图像而无需修改每个容器吗?

之前我在这一点上指出了一个错误,因为我在 RUN 命令中的另一个命令之前使用了 exit in,现在 sed 是一个独立的命令,仍然不起作用。

Dockerfile

FROM python:slim-buster

WORKDIR /home/scr_dca

COPY . . 

ENV FLASK_APP Screenly.py

RUN su && \
apt-get update && \
apt install curl gnupg -y && \
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list && \
apt-get update && ACCEPT_EULA=Y apt-get install msodbcsql17 unixodbc-dev -y && \
apt-get install libgssapi-krb5-2 && \
exit && \
pip3 install -r requirements.txt --trusted-host pypi.python.org && \
sed -i "s/\(MinProtocol *= *\).*/\1TLSv1.0 /" "/etc/ssl/openssl.cnf" && \
sed -i "s/\(CipherString *= *\).*/\1DEFAULT@SECLEVEL=1 /" "/etc/ssl/openssl.cnf"

CMD ["gunicorn", "-b", ":8000", "scr_dca:app"]

我在做:

  • docker run --name screenly_dca3 -d -p 5050:8000 src_dca_v1.0
  • docker container exec -it screenly_dca3 bash
  • 然后在 bash 中:cat /etc/ssl/openssl.cnf

我在图像创建过程中检查了 sed 还没有工作,我运行了以下命令:

sed -i "s/\(MinProtocol *= *\).*/\1TLSv1.0 /" "/etc/ssl/openssl.cnf"
sed -i "s/\(CipherString *= *\).*/\1DEFAULT@SECLEVEL=1 /" "/etc/ssl/openssl.cnf"

我要修改的文件的原始部分:

[system_default_sect]
MinProtocol = TLSv1.2
CipherString = @SECLEVEL=1

sed 预期结果

[system_default_sect]
MinProtocol = TLSv1.0
CipherString = DEFAULT@SECLEVEL=1

【问题讨论】:

  • exit && ??该命令的其余部分不会被执行,对吧?
  • 是的,我试图退出root用户,但现在我意识到没有其他用户了?
  • 但是python模块也在退出后立即安装在该行中:pip3 install -r requirements.txt --trusted-host pypi.python.org
  • 您确定它们在之前的运行中不存在吗?
  • 更新我删除了出口,仍然不起作用:(

标签: bash image docker sed dockerfile


【解决方案1】:

这一行

exit && \

导致其余命令被忽略。

【讨论】:

猜你喜欢
  • 2012-12-08
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 2021-05-02
  • 2017-08-08
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多