gpt4 book ai didi

bash - 在容器内运行 shell 脚本

转载 作者:行者123 更新时间:2023-12-02 18:33:21 26 4
gpt4 key购买 nike

我使用 lemonlatte/docker-webvirtmgr 作为基本文件,但问题是没有为用户 www-data 配置 ssh key ,所以我编写了以下 shell 脚本:

#!/bin/sh

if [ ! -d "/var/local/webvirtmgr/nginxhome" ]; then
mkdir /var/local/webvirtmgr/nginxhome
chown -R www-data:www-data /var/local/webvirtmgr/nginxhome
usermod -d /var/local/webvirtmgr/nginxhome www-data
su - www-data -s /bin/bash -c "ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N ''"
su - www-data -s /bin/bash -c "touch /var/local/webvirtmgr/nginxhome/.ssh/config && echo -e 'StrictHostKeyChecking=no\nUserKnownHostsFile=/dev/null' >> /var/local/webvirtmgr/nginxhome/.ssh/config"
su - www-data -s /bin/bash -c "chmod 0600 ~/.ssh/config"
fi

之后,我将这两个语句添加到 dockerfile 中:
ADD setupssh.sh /webvirtmgr/setupssh.sh
RUN /bin/sh -c "/webvirtmgr/setupssh.sh"

我已经尝试过 CMD/webvirtmgr/setupssh.sh, RUN/webvirtmgr/setupssh.sh 但没有成功...

当我在容器内手动运行脚本时,它工作正常。

这里有什么问题?

问候

更新:
这是维护者的repo的链接: link

更新 2:
dockerfile 的构建是成功的,我把语句放在:
RUN apt-get -ys clean
<statements were here>
WORKDIR /

最佳答案

目录/var/local/webvirtmgr定义为 数量 .

 VOLUME /var/local/webvirtmgr

因此这个目录是 挂载点 在正在运行的容器中,您添加到其中的内容将被覆盖。

您必须使用不同的目录,然后您的脚本才能工作。

这是一个 Dockerfile 来测试它:
FROM lemonlatte/docker-webvirtmgr 
RUN mkdir /var/local/webvirtmgr2
RUN touch /var/local/webvirtmgr2/t && touch /var/local/webvirtmgr/t
RUN ls -la //var/local/webvirtmgr
RUN ls -la /var/local/webvirtmgr2

输出:
Sending build context to Docker daemon 4.608 kB
Sending build context to Docker daemon
Step 0 : FROM lemonlatte/docker-webvirtmgr
---> 18e2839dffea
Step 1 : RUN mkdir /var/local/webvirtmgr2
---> Running in d7a1e897108e
---> cc029293525e
Removing intermediate container d7a1e897108e
Step 2 : RUN touch /var/local/webvirtmgr2/t && touch /var/local/webvirtmgr/t
---> Running in 1a1375651fa7
---> e314c2529d90
Removing intermediate container 1a1375651fa7
Step 3 : RUN ls -la //var/local/webvirtmgr
---> Running in 5228691c84f5
total 8
drwxr-xr-x 2 www-data www-data 4096 Jun 6 09:22 .
drwxr-xr-x 6 root root 4096 Jun 6 09:22 ..
---> ec4113936961
Removing intermediate container 5228691c84f5
Step 4 : RUN ls -la /var/local/webvirtmgr2
---> Running in a6d2a683391a
total 8
drwxr-xr-x 2 root root 4096 Jun 6 09:22 .
drwxr-xr-x 6 root root 4096 Jun 6 09:22 ..
-rw-r--r-- 1 root root 0 Jun 6 09:22 t
---> 3cb98c5c1baf
Removing intermediate container a6d2a683391a
Successfully built 3cb98c5c1baf

关于bash - 在容器内运行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30647501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com