- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在创建一个简单的Dockerfile
,该文件的最后一行是
ENTRYPOINT ["sh", "-c", "spark-submit --master $SPARK_MASTER script.py"]
script.py
是一个简单的 pyspark 应用程序(对于本次讨论并不重要),这个 pyspark 应用程序接收我们尝试使用 docker
传递的一些参数命令如下
docker run --rm my_spark_app_image --param1 something --param2 something_else
但是script.py
没有获取任何参数,即执行的容器:
spark-submit --master $SPARK_MASTER script.py
预期的行为是容器执行:
spark-submit --master $SPARK_MASTER script.py --param1 something --param2 something_else
我做错了什么?
最佳答案
/bin/sh -c
仅采用一个参数,即要运行的脚本。该参数后面的所有内容都是 shell 变量 $0
、$1
等,可以由脚本解析。虽然您可以使用 /bin/sh -c
语法来完成此操作,但它很尴尬,并且将来不会随您一起成长。
我不会尝试解析那里的变量,而是将其移动到您包含在图像中的entrypoint.sh中:
#!/bin/sh
exec spark-submit --master $SPARK_MASTER script.py "$@"
然后更改 Dockerfile 来定义:
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
exec
语法将 PID 1 中的 shell 脚本替换为 Spark-Submit 进程,从而允许信号通过。 "$@"
将传递来自 docker run
的任何参数,每个参数都会被引用,以防参数中有空格。由于它是由 shell 脚本运行的,因此 $SPARK_MASTER
将被扩展。
关于docker - 具有环境变量的 ENTRYPOINT 不接受新参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43381244/
这个问题在这里已经有了答案: How to pass ARG value to ENTRYPOINT? (5 个答案) 关闭 3 年前。 我试图将参数传递到我的 docker 入口点,但它失败了,这
我正在尝试使用以下方法初始化运行Postgres的容器 FROM postgres:9.6 COPY my.backup /docker-entrypoint-initdb.d/ 在我的Dockerf
我在尝试启动我的应用程序时看到以下错误... > css-modules@1.0.0 start /Users/johnnynolan/Repos/css-modules webpack && ope
当我运行时:docker run --name mongodb -p 27107:27107 mongo --noauth --bind_ip=0.0.0.0 我总是得到这个错误:error: exe
我需要在ENTRYPOINT [..]上运行以下命令: dotnet reportgenerator -reports:coverage.cobertura.xml -targetdir:Report
我在理解或看到将bash脚本用作Docker容器的切入点时遇到问题。我已经尝试了很多东西了大约5个小时。 即使从此official Docker blog,使用bash脚本作为入口点仍然不起作用。 D
我有一个没有 UI 的 GWT 实用程序模块(因此,没有从 com.google.gwt.core.client.EntryPoint 继承的类。当我尝试使用 GWT 1.7.1 编译此模块时,我收到
我试图了解 ENTRYPOINT 之间的差异在 Dockerfile 和 docker run --entrypoint 中. exec ENTRYPOINT的表格允许多个参数, # Source:
我有一个入口点,如下所示 ENTRYPOINT /usr/bin/java ... /usr/path/$FILE 我试图在启动容器时传递一个环境变量 -e FILE=myfile.txt 但是这个值
我想以root用户身份启动nginx和cron,以1001用户身份启动php-fpm。我怎样才能做到这一点?我以为我必须创建一个入口点脚本,在其中我使用su-exec并以root身份启动nginx和c
我已经研究过在WordPress docker镜像中添加WordPress插件,因为在研究中我发现可以在docker-entrypoint.sh文件中添加自定义插件。但是我无法在入口点文件中添加自定义
我必须遵循(简单的)Dockerfile: FROM microsoft/windowsservercore:latest SHELL ["powershell", "-Command", "$Err
我正在尝试使用 ENTRYPOINT,但每当我这样做时,我都会收到一个错误,因为 no such file or directory docker 文件: FROM ubuntu:18.04 COPY
我是Docker的新手。尝试使用Transmission建立小图像。 这是我的 Dockerfile : #base image FROM alpine:latest #install Transmi
有没有办法使用 Dockerfile 在容器停止时运行命令?或在 docker-compose.yml使用 Docker 撰写?本质上,我想要一个在容器导出上运行的命令(与 ENTRYPOINT 相对
我正在使用 Dockerfile 构建自定义图像.显然,新的运行工作正常,但是当我停止容器并重新启动它时 - 它没有启动并保持在 的状态0号导出 . 该图像由 apache2 和一堆用于 symfon
我正在运行以下命令来通过命令行设置入口点以使用此容器启动Nginx服务 root @ server:〜#docker run -it --entrypoint =“/ bin / bash /root
我想在我的 docker-entrypoint.sh 上运行几个脚本; 我的问题是它是否有任何区别,如果有,推荐的解决方法是什么,关于以下选项: 一个 . ${HOMEDIR}/myscript --
我在将环境变量导出到 docker 入口点文件时遇到了一些问题。 这是我的 docker 文件内容: FROM ubuntu:16.04 ADD entrypoint.sh . RU
我正在尝试设置一个 django 项目并对其进行 dockerize。 我在运行容器时遇到问题。 据我所知,abe 构建成功,但运行失败。 这是我得到的错误: ERROR: for web Canno
我是一名优秀的程序员,十分优秀!