私はdockerが初めてです。 DockerfileでENV命令を使用して環境変数を設定できることがわかりました。しかし、Dockerfileで長いコマンドのbashエイリアスをどのように設定しますか?
基本的にいつものように、ユーザーの.bashrc
に追加します:
FROM foo
RUN echo 'alias hi="echo hello"' >> ~/.bashrc
いつものように、これは対話型シェルでのみ機能します:
docker build -t test .
docker run -it --rm --entrypoint /bin/bash test hi
/bin/bash: hi: No such file or directory
docker run -it --rm test bash
$ hi
hello
非対話型シェルの場合、小さなスクリプトを作成してパスに配置する必要があります。
RUN echo -e '#!/bin/bash\necho hello' > /usr/bin/hi && \
chmod +x /usr/bin/hi
エイリアスがパラメーターを使用している場合(つまり、hi Jim
-> hello Jim
)、単に"$@"
を追加します。
RUN echo -e '#!/bin/bash\necho hello "$@"' > /usr/bin/hi && \
chmod +x /usr/bin/hi
既存のコマンドのエイリアスを作成するには、ln -s
も使用できます。
ln -s $(which <existing_command>) /usr/bin/<my_command>
コンテナ内ではなく、Dockerfileのみでエイリアスを使用する場合、最も簡単な方法はENV
宣言です。
ENV update='apt-get update -qq'
ENV install='apt-get install -qq'
RUN $update && $install apt-utils \
curl \
gnupg \
python3.6
そして、すでに説明したような方法でコンテナで使用する場合:
RUN printf '#!/bin/bash \n $(which apt-get) install -qq $@' > /usr/bin/install
RUN chmod +x /usr/bin/install
ほとんどの場合、私はエイリアスをビルド段階で使用し、コンテナ内には入りません。そのため、最初の例は、毎日の使用でより速く、より明確で、より簡単です。
これをapp.dockerfileに追加しました
# setup aliases
ADD ./bashrc_alias.sh /usr/sbin/bashrc_alias.sh
ADD ./initbash_profile.sh /usr/sbin/initbash_profile
RUN chmod +x /usr/sbin/initbash_profile
RUN /bin/bash -C "/usr/sbin/initbash_profile"
そして、initbash_profile.sh
の中に、カスタムエイリアスを追加するだけで、.bashrcファイルを入手する必要はありません。
# add the bash aliases
cat /usr/sbin/bashrc_alias.sh >> ~/.bashrc
御worked走をしました!
別のオプションは、コンテナの外部から「docker exec -itコマンド」を使用し、独自の.bashrcまたは.bash_profile(好きなもの)を使用することです。
例えば。 docker exec -it docker_app_1 bash
vi ~/.bash_aliases
source ~/.bash_aliases
エントリーポイントを使用できますが、Dockerfileのエイリアスでは機能しません。
ADD dev/entrypoint.sh /opt/entrypoint.sh
ENTRYPOINT ["/opt/entrypoint.sh"]
あなたのentrypoint.sh
#!/bin/bash
set -e
function dev_run()
{
}
export -f dev_run
exec "$@"
(クイックコピー/貼り付け、申し訳ありません)