【问题标题】:Run multiple commands services in yml file when docker-compose updocker-compose up 时在 yml 文件中运行多个命令服务
【发布时间】:2021-05-11 02:26:25
【问题描述】:

我想在 docker-compose up 这个服务时运行多个命令,但总是失败

Win 10,Powershell,docker:2.4.0.0,引擎:19.03.13,Compose:1.27.4

version: '3.7'

services:
    cypress:
        container_name: tax_t_cypress
        image: cypress/included:5.4.0
        command: bash -c "npm i cypress-file-upload@5.0.3" && cypress run
        volumes:
          - ./:/tax
        working_dir: /tax
        environment:
          - CYPRESS_BASE_URL=http://nginx:8888
        depends_on: 
          - webpack

会出错

You passed: npm i cypress-file-upload@5.0.3
The error was: Cannot read property 'split' of undefined

如果我使用像command: cypress run这样的单个命令,没关系,但是我确实需要先在这个图像中安装依赖项,如何在yml中成功运行多个命令。

【问题讨论】:

    标签: docker docker-compose dockerfile docker-machine


    【解决方案1】:

    如果你需要在镜像上安装一些东西,你应该在镜像级别上做,通过编写一个 dockerfile 并在你的 docker compose 中引用它。

    你的 dockerfile 可能是

    FROM cypress/included:5.4.0
    RUN npm i cypress-file-upload@5.0.3
    CMD ["cypress" , "run"]
    

    在你的 docker-compose.yml 中

    version: '3.7'
    
    services:
        cypress:
            container_name: tax_t_cypress
            build:
                context: .
                dockerfile: dockerfile
            volumes:
              - ./:/tax
            working_dir: /tax
            environment:
              - CYPRESS_BASE_URL=http://nginx:8888
            depends_on: 
              - webpack
    

    【讨论】:

    • 另外,您可以将所有要运行的命令放在一个脚本上,加载到容器镜像中,并将其配置为容器的ENTRYPOINT。尽管在这种特定情况下,@Umair 的答案正是您所需要的。
    猜你喜欢
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2019-03-17
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多