我正在try 使用一个定制配置文件(让我们称之为custom.configuration.conf)在Docker中运行一个定制-nginx服务器

并且,我希望容器根据部署环境 Select 配置文件.因此,在我的存储库中,我将配置如下:

configuration(folder)
|
----> qa (sub-folder of configuration folder)
     |
     ----> custom.configuration.conf
|      
----> prd (sub-folder of configuration folder)
      |
      ---> custom.configuration.conf

为了动态地 Select 这些文件,我引入了一个环境变量DEPLOYMENT_ENVIRONMENT,我在一个名为start.sh的文件中使用它

start.sh脚本如下:

cp configuration/${DEPLOYMENT_ENVIRONMENT}/custom.configuration.conf /etc/nginx/conf.d
nginx -g "daemon off;"

我的文档文件如下所示:

FROM nginx:1.23-alpine as application
WORKDIR /build
COPY configuration configuration
COPY start.sh start.sh
ENTRYPOINT /build/start.sh

我用来构建和运行容器的命令是:

docker build -t custom-nginx .
docker run -e DEPLOYMENT_ENVIRONMENT=qa -p 8080:80 custom-nginx

然而,当我docker exec进入容器时,我看不到/etc/nginx/conf.dcustom.configuration.conf.

我在一台装有Docker Desktop的Windows 10计算机上运行这个程序.

start.shDockerfileconfiguration文件夹/文件位于我的存储库中的根级别.

我不知道我做错了什么.请帮助我理解为什么我不能将文件从一个容器复制到另一个容器.

附言:我实际上try 在容器内运行cp configuration/${DEPLOYMENT_ENVIRONMENT}/custom.configuration.conf /etc/nginx/conf.d命令,以判断该命令是否错误.然而,如果我在容器中手动执行它,它可以工作,但当我使用docker run运行它时,它失败了.

推荐答案

我已经按照这里的指示执行了EOL conversion from Windows(CR LF) to Unix(LF):https://stackoverflow.com/a/50212715/6123155,这为我解决了这个问题.

Linux相关问答推荐

在64位Linux Mint 21.2 Mate上呈现nvim中的文本对象时出现问题

Ansible-删除两个注释之间的代码块(包括注释本身)

如何创建一堆文件中所有单词的列表?

AWK 命令根据另一列中相同的值获取列中的不同值

如何在我的 PC 上配置 GitLab 和 GitHub ssh 密钥

需要获取文件名、行号、模式在文件中的匹配位置

如何为命令的所有选项启用无密码 sudo?

Bash shift 改变了关联数组的期望值

如何在 Linux 上使用 -grep 构建过滤间隔的命令

Linux命令行如何接受没有pin的蓝牙设备配对

将 awk 输出保存到变量

如何使用 AWK 合并两个文件?

如何在 Linux 中为 C 或 C++ 的进程设置 CPU 亲和性?

我如何从 Ubuntu 上的源代码自己构建 python?

如何知道是否有足够的内存可以在 Linux 机器上部署新应用程序?

qstat 和长作业(job)名称

Ant 找不到 javac,在 Ubuntu 上不会设置 JAVA_HOME

Linux如何确定下一个PID?

如何在 sed 中指定非捕获组?

在 Docker 容器中运行的 JVM 的驻留集大小 (RSS) 和 Java 总提交内存 (NMT) 之间的差异