在使用Docker启动的CentOS6.8上,可以将S3类似地挂载为NFS,并在apache2.2 PHP5.3中使用

通常情况下,在这里启动的NFSServer作为容器(省略部分)。

希望这次的理想能够面对现实,因此我会继续前行。
希望这个小众领域的专业知识能对某人有所帮助。

在挂载上,我们会使用比s3fs更快的由golang制作的Goofys。

其实我本来想使用可信赖且经过验证的s3fs,但是在CentOS6.8上无论如何都无法构建,这是背后的原因。
准备安装s3fs所需的fuse确实有些麻烦。
如果有解决方案的人,请告诉我吧。
嗯,如果可以的话,应该使用CentOS7。

请注意,以下是最常见的Dockerfile

FROM centos:6.8
MAINTAINER furuyamah <furuyamah@isao.co.jp>

# 必要なものをインストール
# CentOS6.8のPHPは5.3なのでそのまま使う
# CentOS6.8のMySQLは5.1なので5.5をremiから入れる
# この辺はgoofys単体にはおそらく不要
RUN yum update -y && \
    rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm && \
    rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm && \
    yum install -y --enablerepo=remi mysql compat-mysql51 && \
    yum install -y gcc ImageMagick-devel curl-devel && \
    yum install -y \
        httpd \
        httpd-devel \
        httpd-tools \
        php \
        php-cli \
        php-common \
        php-dba \
        php-devel \
        php-gd \
        php-mbstring \
        php-mcrypt \
        php-mysql \
        php-pdo \
        php-pear \
        php-pecl-apc \
        php-pecl-memcache \
        php-xml \
        php-xmlrpc && \
    pecl clear-cache && \
    printf "\n" | pecl install imagick-3.1.2 && \
    printf "\n" | pecl install pecl_http-1.7.6

# goofysに必要なものをインストール
RUN yum install -y golang fuse git syslog && \
    export GOPATH=$HOME/go && \
    go get github.com/kahing/goofys && \
    go install github.com/kahing/goofys && \
    mkdir /root/.aws
#AWSアクセスのためのキー
COPY credentials /root/.aws/credentials

WORKDIR /var/www
COPY docker-entrypoint.sh /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]

EXPOSE 80

接下来要执行的docker-entrypoint.sh

(Translation: The next thing to be executed is docker-entrypoint.sh)

#!/bin/bash
set -e

# mount S3
# syslogd needs to running goofys in background.
/etc/init.d/rsyslog start
mkdir -p /mnt/s3/mount_point
/root/go/bin/goofys [S3のバケット名] /mnt/s3/mount_point -o allow_other,--file-mode=0666,--dir-mode=0777

# start httpd
/etc/init.d/httpd start

tail -f /dev/null

我这次也启动了syslogd和goofys这两个进程。
之所以启动syslogd是因为需要将goofys在后台运行。
另外,为了防止容器立即结束,我还在尾部进行了一些操作。
就是这种情况…

apache-php:
  build: ./apache-php
  ports:
    - "80:80"
  volumes:
    - "../pub:/var/www"
  links:
    - memcached
  privileged: true
  cap_add:
    - SYS_ADMIN
    - MKNOD
  devices:
    - "/dev/fuse"

memcached:
  image: memcached:1.4

为了使用fuse服务,我们添加了privileged、cap_add和devices选项。这是一个魔法咒语。

目录结构

AWS的访问密钥存储文件增多了。

project_dir
+- docker-compose.yml
+- apache-php
    +- Dockerfile
    +- credentials

打开

docker-compose up -d

停下来

docker-compose stop
docker-compose rm -f

如果能够对您有所帮助,就很好。

广告
将在 10 秒后关闭
bannerAds