我不知道为什么但我似乎无法从主机系统在docker容器内运行此脚本
在主机上我在shell脚本中执行此代码
#!/bin/bash
Docker_wordpress_status_check () {
mysql_docker_status=$(docker container ls | grep -E 'docker_image_name|dockerwordpressmaster_wp-fpm_1')
if [[ "$mysql_docker_status" ]]; then
echo "checking to see if wordpress exists"
wget https://s3/wordpress_staging_to_production_image_fixer.sh
chmod +x wordpress_staging_to_production_image_fixer.sh
docker cp wordpress_staging_to_production_image_fixer.sh dockerwordpressmaster_wp-fpm_1:/var/www/html/wordpress_staging_to_production_image_fixer.sh
docker exec -it dockerwordpressmaster_wp-fpm_1 sh -c "./wordpress_staging_to_production_image_fixer.sh"
fi
}
Docker_wordpress_status_check
这个脚本大部分工作正常,我甚至可以在正确的目录中看到该文件
/var/www/html/
我可以清楚地看到该文件存在于容器
中docker exec -it dockerwordpressmaster_wp-fpm_1 sh
/var/www/html # ls -l | grep wordpress_staging_to_production_image_fixer.sh
-rwxr-xr-x 1 500 500 898 Dec 26 17:31
wordpress_staging_to_production_image_fixer.sh
然而,当我尝试从容器
中执行脚本时docker exec dockerwordpressmaster_wp-fpm_1 sh ./var/www/html/wordpress_staging_to_production_image_fixer.sh
sh:无法打开' ./ var / www / html / wordpress_staging_to_production_image_fixer.sh'
docker exec dockerwordpressmaster_wp-fpm_1 "sh" -c "/var/www/html/wordpress_staging_to_production_image_fixer.sh"
sh:/var/www/html/wordpress_staging_to_production_image_fixer.sh:not found
docker exec dockerwordpressmaster_wp-fpm_1 sh -c wordpress_staging_to_production_image_fixer.sh
sh:wordpress_staging_to_production_image_fixer.sh:未找到
docker exec dockerwordpressmaster_wp-fpm_1 bash ./var/www/html/wordpress_staging_to_production_image_fixer.sh
bash:./ var / www / html / wordpress_staging_to_production_image_fixer.sh:没有这样的文件或目录
我不太确定我做错了,因为文件没有执行 我意识到所有者可能不正确,因此我可能无法运行该脚本
docker exec dockerwordpressmaster_wp-fpm_1 sh chown root:root /var/www/html/wordpress_staging_to_production_image_fixer.sh
sh:不能打开' chown'
非常感谢您解决此问题的任何帮助
答案 0 :(得分:1)
由于两个原因,以下声明可能对您不起作用
docker exec dockerwordpressmaster_wp-fpm_1 "sh" -c "/var/www/html/wordpress_staging_to_production_image_fixer.sh"
一个是Access问题,另一个是shell脚本开头缺少的shebang #!/bin/sh
。您的错误是" sh:/var/www/html/wordpress_staging_to_production_image_fixer.sh:找不到"。这肯定表明访问问题。所以你需要chown to root:root
或使用id为500的用户登录。
docker exec sh -c" pwd&& chown root:root wordpress_staging_to_production_image_fixer.sh&& sh wordpress_staging_to_production_image_fixer.sh"