62433


AWS EC2 用のセットアップシェルスクリプトを dockerfile に移植しようと思い

[code]

    FROM ubuntu:16.04
    COPY setup.sh /root/
    RUN bash /root/setup.sh
    
[/code]

という Dockerfile を描いて  
`docker build -t test -f Dockerfile .`  
で実行してみたのですが

[code]

    /root/setup.sh: 8: /root/setup.sh: sudo: not found
    
[/code]

と言われます

sudo を消せばいいだけなのですが  
できれば setup ファイルそのままの状態で流用できれば  
EC2用とdocker用で2重管理しなくてすみます

また sudo をインストールすれば解決しそうですが  
docker 内ではどうせ root でしか作業しないので  
sudo コマンド自体を無視するようにできないでしょうか

alias sudo=''

みたいなことを描いてみたんですがやはり  
`sudo: command not found`  
になります

setup.sh のエラー箇所まではこんな感じです

[code]

    #!/bin/bash
    #alias sudo=''
    
    PYENV=~/.pyenv
    PYENV_BIN=$PYENV/bin
    
    ##Install git and python
    sudo yum -y install git
    git clone https://github.com/pyenv/pyenv.git $PYENV
    
    echo -e "\nexport PYENV_ROOT=$PYENV" | sudo tee -a ~/.bash_profile  >> /dev/null
    echo -e "\nexport PATH=$PYENV_BIN:$PATH" | sudo tee -a ~/.bash_profile  >> /dev/null
    
[/code]


CC BY-SA 4.0
2020-01-21T09:39:57.153
62427
2020-01-21T11:41:22.470
question
docker shellscript
シェルスクリプトで特定のコマンドを無視する方法はないですか？


(コメントより)

alias は interactive mode でしか利用できませんので、例えば sudo を関数化してしまう方法が考えられます。`function
sudo { "$@"; }`


CC BY-SA 4.0
2020-01-21T11:41:22.470
62433
2020-01-21T11:41:22.470
754
62427
answer