在使用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
如果能够对您有所帮助,就很好。