【问题标题】:Docker compose: How to set env variable to use in a scriptDocker compose:如何设置环境变量以在脚本中使用
【发布时间】:2017-10-10 13:06:28
【问题描述】:

我正在通过 docker 运行 webdriverIO (https://github.com/hulilabs/webdriverio) 测试:

docker-compose run --rm webdriverio wdio

现在我需要用这个命令(ENV?)设置一个变量,可以在测试文件中使用。

describe('my awesome website', function () {
  it('should do some chai assertions', function () {
    browser.url(url) // <-- I need to set the variable (dev vs. prod)
    browser.getTitle().should.be.equal('Website title')
  })
})

我该怎么做?


配置

我的 wdio.conf.js

exports.config = {
  host: 'hub',
  port: 4444,
  specs: [
    './specs/**/*.js'
  ],
  capabilities: [
    { browserName: 'chrome' },
    { browserName: 'firefox' }
  ]
}

我的 docker-compose.yml 看起来像这样:

version: '2'
services:
    webdriverio:
        image: huli/webdriverio:latest
        depends_on:
            - chrome
            - firefox
            - hub
        environment:
            - HUB_PORT_4444_TCP_ADDR=hub
            - HUB_PORT_4444_TCP_PORT=4444
        volumes:
            - /app:/app

    hub:
        image: selenium/hub
        ports:
            - 4444:4444

    firefox:
        image: selenium/node-firefox
        ports:
            - 5900
        environment:
            - HUB_PORT_4444_TCP_ADDR=hub
            - HUB_PORT_4444_TCP_PORT=4444
        depends_on:
            - hub

    chrome:
        image: selenium/node-chrome
        ports:
            - 5900
        environment:
            - HUB_PORT_4444_TCP_ADDR=hub
            - HUB_PORT_4444_TCP_PORT=4444
        depends_on:
            - hub

【问题讨论】:

  • 你使用nodeJs吗?
  • 是的,我愿意。但我认为这与这里无关......

标签: javascript docker docker-compose webdriver-io


【解决方案1】:

首先你需要将 ENV 变量设置为docker-compose.yml

services:
    webdriverio:
        image: huli/webdriverio:latest
        depends_on:
            - chrome
            - firefox
            - hub
        environment:
            - HUB_PORT_4444_TCP_ADDR=hub
            - HUB_PORT_4444_TCP_PORT=4444
            - APP_PROFILE=dev # <- here new variable
        volumes:
            - /app:/app

那么你需要在你的应用中读取这个变量

describe('my awesome website', function () {
  it('should do some chai assertions', function () {
    browser.url(process.env.APP_PROFILE)
    browser.getTitle().should.be.equal('Website title')
  })
})

另外,在您的Dockerfile 中,您可以将 ENV 变量设置为默认值:

ENV APP_PROFILE=prod

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 2022-11-10
    • 2023-03-16
    • 2019-09-11
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多