共享卷Docker权限

时间:2019-03-26 12:00:46

标签: docker jenkins docker-compose

我正在使用docker-compose创建大量的Docker容器。所有的容器都有一个共享的卷。

volumes:
  - ${PHP_SERVICES_FOLDER}:/var/www/web

docker容器如下。

  • Jenkins(FROM jenkins / jenkins:最新)-这将写入共享卷
  • Nginx(FROM nginx)-从共享卷中读取并使用php-fpm容器
  • PHP-FPM(从php:7.2-fpm)

使用具有777权限的卷的文件,Nginx和PHP可以读取,写入和执行文件,但是一旦我在Jenkins中触发了一个构建,即可更新卷中的文件。

我认为当权限为777时它起作用的原因是,它允许“其他”用户完全访问该卷。

如何让Nginx,PHP-FPM和Jenkins使用同一用户读取,写入和执行该卷中的文件?

1 个答案:

答案 0 :(得分:0)

您可以使用相同的uid在每个Dockerfile中创建一个用户,然后向具有这些uid的用户授予权限。

例如:

# your dockerfile
RUN groupadd -g 799 appgroup
RUN useradd -u 799 -g appgroup shareduser
USER shareduser

然后,您只需要使用新创建的chown uid(在任何容器中或在主机上,uid在容器和主机之间共享即可)chown -R 799:799 /volume/root/

import pandas as pd

employee_id = [1,1,1,2,2,2,3,3,4,4]
action_code = ['TER','RET','RET','TER','ABC','DEF','RET','RET','PLA','TER']
action_reason = ['DEA','ABC','DEF','DEA','ABC','DEF','FGH','EFG','ABC','DEA']
concatenated_output = ['TER_DEA', 'RET_ABC', 'RET_DEF', 'TER_DEA', 'ABC_ABC', 'DEF_DEF', 'RET_FGH', 'RET_EFG', 'PLA_ABC', 'TER_DEA']

df = pd.DataFrame({
    'Employee ID': employee_id,
    'ActionCode': action_code,
    'ActionReason': action_reason,
    'ConcatenatedOutput': concatenated_output,
})