我使用 aws pipeline 将网站自动部署到 ec2:
在
dockerfile
中:我设置:
USER root
RUN chmod -R 777 /var/www/html
这是我的脚本:
ApplicationStart:
- location: scripts/start_docker.sh
timeout: 300
runas: root
start_docker.sh的内容
#!/bin/bash
# Login to ECR
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 11111111.dkr.ecr.ap-northeast-1.amazonaws.com
if [ $? -ne 0 ]; then
echo "Docker login failed"
exit 1
fi
# Pull the Docker image
docker pull 11111111.dkr.ecr.ap-northeast-1.amazonaws.com/myapptest:latest
if [ $? -ne 0 ]; then
echo "Docker pull failed"
exit 1
fi
#Stop container to release post if it running
docker stop $(docker ps -q)
docker rm $(docker ps -q)
# Run the Docker container
CONTAINER_ID=$(docker run -d -p 80:80 --restart unless-stopped 11111111.dkr.ecr.ap-northeast-1.amazonaws.com/myapptest:latest)
if [ $? -ne 0 ]; then
echo "Docker run failed with exit code $?"
exit 125
fi
# Wait for the container to be fully up and running
sleep 10
# Ensure the correct permissions for the mounted folder
docker exec -i "$CONTAINER_ID" bash -c "chmod -R 777 /var/www/html"
if [ $? -ne 0 ]; then
echo "Failed to set permissions for /var/www/html"
exit 1
fi
如果我使用 ssh 连接并从终端运行 cmd:
root@bfd48a56270e:/var/www/html# chmod -R 777 /var/www/html
我的网站可以正常工作。
我在运行 chmod 之前和之后检查权限,它们是相同的:
root@bfd48a56270e:/var/www/html# ls -ld /var/www/html
drwxrwsrwx 1 www-data www-data 4096 Nov 14 04:07 /var/www/html
root@bfd48a56270e:/var/www/html# chmod -R 777 /var/www/html
root@bfd48a56270e:/var/www/html# ls -ld /var/www/html
drwxrwsrwx 1 www-data www-data 4096 Nov 14 04:07 /var/www/html
为什么文件夹“/var/www/html”在通过 aws codedeploy 部署后缺少权限?
您给出的绝对路径为:/var/www/html
不确定这是否可以修复它,但首先我会尝试使用相对路径(没有第一个“/”):
var/www/html
我的第二次尝试是单独导航到管道中的路径,然后在下一步中对文件夹名称进行 chmod