Interactive command in Dockerfile

前端 未结 3 525
梦毁少年i
梦毁少年i 2020-12-09 17:34

I\'m trying to automate a creation of a development Docker image using docker build command with appropriate Dockerfile. One of the scripts that I

相关标签:
3条回答
  • 2020-12-09 18:30

    You can use the technique here:

    (echo "initial command" && cat) | some_tool
    

    Or, if multiple stages use printf and concat with \n:

    (printf "cmd1\ncmd2" && cat) | some_tool
    
    0 讨论(0)
  • 2020-12-09 18:36

    The output of RUN commands is shown in your terminal during the build. The Docker build process is completely non-interactive, so you must find some way of either auto-accepting the terms (almost every piece of software allows this, think apt-get install -y...) or using some shell wizardry to echo the acceptance back to the process or whatever (Expect maybe?).

    0 讨论(0)
  • 2020-12-09 18:36

    You can also do it in several steps, begin with a Dockerfile with instructions until before the interactive part. Then

    docker build -t image1 .

    Now just

    docker run -it --name image2 image1 /bin/bash

    you have a shell inside, you can do your interactive commands, then do something like

    docker commit image2 myuser/myimage:2.1

    The doc for docker commit

    https://docs.docker.com/engine/reference/commandline/commit/

    you may need to specify a new CMD or ENTRYPOINT, as stated in the doc

    Commit a container with new CMD and EXPOSE instructions

    For example some docker images using wine do it in several steps, install wine, then launch and configure the software launched in wine, then docker commit

    0 讨论(0)
提交回复
热议问题