在容器启动时从 Docker 上的共享卷复制文件并创建符号链接

Copy files and create symlink from a shared volume on Docker on container start

我有一个容器在 运行 上安装一个共享卷,我需要将一些文件从这个卷安装的位置复制到另一个并创建一个符号链接。

我试了好几种方法,最后还是用supervisor。所以我创建了一个简单的 bash 脚本,它从卷安装在 docker 容器的位置到我在 docker 容器内的最终目的地所需的 cp 和 ln。但是主管失败了。

这是我的主管 conf 文件:

[supervisord]
nodaemon=true

[program:nonversioned]
command=/deploy.sh
numprocs=1
autostart=true
autorestart=true
exitcodes=1

这是我的示例 deploy.sh

#!/usr/bin/env bash

# Copy config files
cp -f /efs/deploys/wp-config.php /var/www/html

# Softlink to uploads
ln -s /efs/deploys/uploads /var/www/html/assets/uploads

在我的 Dockerfile 中也尝试了启动 supervisor 的几件事。最后我在尝试:

CMD ["supervisord -n"]

但是它说supervisord不在路径中

我开始我的容器:

docker run -d 
        -v /home/user/my_efs:/efs \
        mytest/testing

您需要分别指定命令和参数,例如

CMD ["supervisord", "-n"]

它可能仍然找不到路径中的 supervisord。在这种情况下,只需指定完整路径:

CMD ["/usr/bin/supervisord", "-n"]