2017-04-05 65 views
1

我们正在尝试整合一些旧的未记录的PHP网络应用程序。为了使这些应用程序可以在不同的环境之间移植,我们将它们集成到一起我们不应该改变代码,除了一些配置文件。如何管理用户和组在多个容器之间共享数据?

我们使用了一个自定义的php-5.4-apache容器,该容器将主机文件夹挂载到/var/www/html以提供Web应用程序。 Apache服务器运行为www-data用户。 entrypoint被配置为在/var/www/html文件夹上设置正确的文件夹和文件权限,并将所有权更改为www-data

其中一个网络应用程序通过Http上载图像,然后使用Ftp和someUser凭据将其移动到其他文件夹。这要求我们有一个额外的容器运行Ftp服务器。

问题是文件被正确上传,但不能使用Ftp移动。似乎有权限问题。

我们的假设是,如果FTP服务器和在哪里可以在同一台机器下托管的HTTP服务器,我们应该有www-datasomeUser用户在同一组someGroup。而且/var/www/html内容应归anyUser:someGroup所有。

当Ftp和Http服务器运行在不同的容器中并且数据从主机挂载时,我们如何实现这一目标?

回答

0

文件中的底层UID和GID从主机传到容器,因此您只需在设置任何地方的用户或组时匹配ID号。用户/组的名称实际上并没有任何影响,除非您的理智。

在这种情况下,您需要确保组在两个具有相同GID的容器中可用,并且创建的组文件是可写的。

addgroup --gid 5001 somegroup 
adduser --disabled-password --uid 5001 --gid 5001 someuser 

如果您想在将来混淆某人,甚至可以在每个容器中为不同的用户名使用相同的UID。

网络adduser --disabled-password --uid 5001 www-data
FTP adduser --disabled-password --uid 5001 someUser

然后,两个用户可以读取和写入共享卷的UID的比赛在同一个文件,但是这可能不是一个特别明显的解决方案。