Docker与Nginx的Ubuntu,PHP的FPM和S3FS,但s3fs不起作用

嗨,我不能连接到S3的存储从亚马逊nginx应该使用作为根。

这意味着我在run.sh中运行了s3fs命令,但是docker没有连接到S3存储器,在那里是一个HTML文件,应该通过nginx显示。 因为当我到本地主机时,我看到“forbitten”错误。

我没有在日志中的错误,所以我没有胶水,我可以解决这个问题。

你有什么想法如何解决这个问题?

这是我的Dockerfile:

FROM ubuntu:16.04 MAINTAINER Corelike (Fabian Hahn) <docker@corelike.com> # Variables ENV S3_LOCATION=/www ENV S3_IDENTITY=IDENT ENV S3_CREDENTIAL=SECRET ENV S3_BUCKET=BUCKETNAME # Update ubuntu RUN apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y #Install nginx, php-fpm and s3fs RUN apt-get install -y nginx php-fpm php-mysql git wget automake autotools-dev g++ git libcurl4-gnutls-dev libfuse-dev libssl-dev libxml2-dev make pkg-config && git clone https://github.com/s3fs-fuse/s3fs-fuse && wget https://github.com/Yelp/dumb-init/releases/download/v1.0.1/dumb-init_1.0.1_amd64.deb && dpkg -i dumb-init_*.deb && rm dumb-init_*.deb WORKDIR s3fs-fuse RUN ./autogen.sh && ./configure --prefix=/usr --with-openssl && make && make install WORKDIR / # Configuration PHP RUN sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/7.0/fpm/php.ini # Copy startup script ADD files/nginx.conf /etc/nginx/ ADD files/run.sh / # Cleaning RUN rm -rf /var/cache/* RUN chmod 755 /run.sh && rm -rf /s3fs-fuse && mkdir /s3data EXPOSE 80 VOLUME /www CMD dumb-init /run.sh 

和我的run.sh:

 #!/bin/sh # Get s3 creds from env var and write to password file echo "$S3_IDENTITY":"$S3_CREDENTIAL" >> /etc/passwd-s3fs chmod 600 /etc/passwd-s3fs # Mount s3 bucket from environment variable mkdir -p $S3_LOCATION s3fs $S3_BUCKET $S3_LOCATION -o allow_other,mp_umask=022,use_cache=/tmp/s3cache,dbglevel=info -f mkdir -p /logs/nginx mkdir -p /tmp/nginx chown www-data:www-data /tmp/nginx chown -R www-data:www-data /logs chown -R www-data:www-data /www touch /www/text.txt service php7.0-fpm start nginx # Keep it running tail -f /dev/null 

我使用以下命令启动docker:

 sudo docker run -d -p 80:80 --privileged nginx 

非常感谢你!

最好