相关疑难解决方法(0)

在Dockerfile中的条件语句中运行

我有一个Dockerfile目前使用以下内容的:

COPY ./compose/local/django/start.sh /start.sh
RUN sed -i 's/\r//' /start.sh
RUN chmod +x /start.sh
Run Code Online (Sandbox Code Playgroud)

如您所见,它会复制文件,然后使其可执行。现在,我需要根据构建映像时提供的参数来更改此设置。我试过使用此:

RUN if [ "$arg" = "True" ]; then \
    COPY ./compose/local/django/new.sh /new.sh \
    RUN sed -i 's/\r//' /new.sh \
    RUN chmod +x /new.sh; else \
    COPY ./compose/local/django/start.sh /start.sh \
    RUN sed -i 's/\r//' /start.sh \
    RUN chmod +x /start.sh; fi
Run Code Online (Sandbox Code Playgroud)

但这失败了,因为看来我无法在条件语句中运行COPYRUN命令。它总是失败:

/bin/sh: 1: COPY: not found
Run Code Online (Sandbox Code Playgroud)

要么

/bin/sh: 1: RUN: not found
Run Code Online (Sandbox Code Playgroud)

因此,我认为最好的做法是创建一个单独的bash文件来进行复制,例如:

#!/usr/bin/env bash

if [ "${arg}" = "True" …
Run Code Online (Sandbox Code Playgroud)

docker

4
推荐指数
1
解决办法
5123
查看次数

标签 统计

docker ×1