为什么文件夹“/var/www/html”在通过aws codedeploy部署后缺少权限?

问题描述 投票:0回答:1

我使用 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

部署后的结果: enter image description here

如果我使用 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 部署后缺少权限?

aws-codepipeline aws-code-deploy
1个回答
0
投票

您给出的绝对路径为:/var/www/html

不确定这是否可以修复它,但首先我会尝试使用相对路径(没有第一个“/”):

var/www/html

我的第二次尝试是单独导航到管道中的路径,然后在下一步中对文件夹名称进行 chmod

© www.soinside.com 2019 - 2024. All rights reserved.