docker-compose launch cmd设置环境变量

时间:2018-10-04 06:05:06

标签: docker-compose

我创建了一个容器,该容器可以在主机上运行Apache的用户从主机设置用户的uid。这样,我可以共享目录而不会出现任何权限问题。
我正在使用环境变量“ CONTAINER_USER_UID”来绑定那些用户。因此,我用id -u的结果来设置此变量。

我试图将'id -u'作为值添加到docker-compose文件中,但是它不起作用...

version: '3'

services:
  members:
    image: olive007/ubuntu-php-apache:18.04-7.2-2.4
    environment:
      CONTAINER_USER_UID: `id -u`
      CONTAINER_USER_GID: `id -g`
    ports:
      - "80:80"
    volumes:
      - ./laravel:/var/www/html

我收到此错误:

  

错误:yaml.scanner.ScannerError:扫描下一个令牌时出现
  找到了无法启动任何令牌的字符“`”

任何人都知道如何通过在主机上运行命令的结果来设置环境变量吗?

对不起,我正在学习英语...

1 个答案:

答案 0 :(得分:0)

您无法从yml文件运行bash命令。使用docker-compose environment variable substition

docker-compose.yml

version: '3'

services:
  members:
    image: olive007/ubuntu-php-apache:18.04-7.2-2.4
    environment:
      CONTAINER_USER_UID: ${HOST_UID}
      CONTAINER_USER_GID: ${HOST_GID}
    ports:
      - "80:80"
    volumes:
      - ./laravel:/var/www/html

然后以以下方式运行服务:

export HOST_UID=`id -u`
export HOST_GID=`id -g`
docker-compose up