VonC の回答に基づいて、Dockerfile に以下を追加します (これにより、毎回コマンド ラインで環境変数を入力せずにコンテナーを実行できます):
ENV TERM xterm-256color
#... more stuff
CMD ["bash", "-l"]
そして確かにそれは以下で動作します:
docker run -it my-image:tag
tmux
の場合 ~/.tmux.conf
で色を操作するには 必要なもの:
set -g default-terminal "screen-256color"
tmux
での UTF-8 サポート 、私の ~/.bashrc
で :
alias tmux='tmux -u'
私の Dockerfile:
FROM fedora:26
ENV TERM xterm-256color
RUN dnf upgrade -y && \
dnf install golang tmux git vim -y && \
mkdir -p /app/go/{bin,pkg,src} && \
echo 'export GOPATH=/app/go' >> $HOME/.bashrc && \
echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc && \
mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim \
https://tpo.pe/pathogen.vim && \
git clone https://github.com/farazdagi/vim-go-ide.git \
~/.vim_go_runtime && \
bash ~/.vim_go_runtime/bin/install && \
echo "alias govim='vim -u ~/.vimrc.go'" >> ~/.bashrc && \
echo "alias tmux='tmux -u'" >> ~/.bashrc && \
echo 'set -g default-terminal "screen-256color"' >> ~/.tmux.conf
CMD ["bash", "-l"]
Dockerfile は、Fedora 26 に基づいてイメージを構築し、それを更新し、いくつかのパッケージ (Git、Vim、golang、および tmux) をインストールし、Vim 用の病原体プラグインをインストールします。次に、ここ vim-go-ide から Git リポジトリをインストールし、最後に実行します色とUTF-8が正常に動作するように、いくつかの構成ファイルを微調整します。おそらく /app/go の下にマウントされる永続的なストレージを追加する必要があります。
すべての開発ツールが既にインストールされているイメージがある場合は、Dockerfile
を作成します。 ENV
で RUN
内の構成ファイルを変更するコマンドを追加します。 FROM
でベース イメージを使用します。 声明。私は怠け者であり、(初期設定以外に) イメージを実行するときに入力する手間が省けるため、このソリューションを好みます。
tmux 内での Vim とプラグインの使用
-t を追加するとうまくいきます:
docker exec -t vendor/bin/phpunit
VonC の回答に加えて、この Bash 関数を作成しました:
drun() { # start container with the specified entrypoint and colour terminal
if [[ $# -lt 2 ]]; then
echo "drun needs 2+ arguments: image entrypoint" >&2
return
fi
docker run -ti -e "TERM=xterm-256color" "[email protected]"
}
OP SolomonT は docker run
と報告しています env
で 仕事をする:
docker run --rm -it -e "TERM=xterm-256color" govim bash -l
また、Fernando Correia はコメントに次のように付け加えています。
<ブロック引用>
カラーサポートと tmux
の両方を取得するには 仕事、私は両方の例を組み合わせました:
docker exec -it my-container env TERM=xterm-256color script -q -c "/bin/bash" /dev/null
チェプナーがコメントしたように(以前の回答)、 .bash_profile
bash_prompt
から供給されます (対話型シェルです)。 .bash_profile
によって呼び出されます .
しかし、docker issue 9299 は TERM
を示しています すぐには設定されないようで、ユーザーは別の bash を開く必要があります:
docker exec -ti test env TERM=xterm-256color bash -l
問題 8755 で同様の色の問題があります。
問題を説明/再現するには:
docker exec -ti $CONTAINER_NAME tty
not a tty
現在の回避策は次のとおりです:
docker exec -ti `your_container_id` script -q -c "/bin/bash" /dev/null
どちらも、最初に実行中のコンテナがあることを前提としていますが、ここでは不便かもしれません.