Von*_*onC 33
该OP SolomonT报告说,docker run与env做的工作:
docker run --rm -it -e "TERM=xterm-256color" govim bash -l
Run Code Online (Sandbox Code Playgroud)
为了获得颜色支持并使tmux工作,我结合了两个例子:
docker exec -it my-container env TERM=xterm-256color script -q -c "/bin/bash" /dev/null
Run Code Online (Sandbox Code Playgroud)
正如chepner所评论的(早期答案),tmux源自(它是一个交互式shell),因为.bash_profile被称为bash_prompt.
但Docker问题9299说明.bash_profile似乎没有立即设置,迫使用户打开另一个bash:
docker exec -ti test env TERM=xterm-256color bash -l
Run Code Online (Sandbox Code Playgroud)
问题8755有类似的颜色问题.
为了说明/重现问题:
docker exec -ti $CONTAINER_NAME tty
not a tty
Run Code Online (Sandbox Code Playgroud)
在当前的解决方法是:
docker exec -ti `your_container_id` script -q -c "/bin/bash" /dev/null
Run Code Online (Sandbox Code Playgroud)
两者都假设你首先有一个正在运行的容器,这在这里可能不方便.
小智 10
根据VonC 的回答,我将以下内容添加到我的 Dockerfile(这使我可以运行容器而无需每次在命令行上键入环境变量):
ENV TERM xterm-256color
#... more stuff
CMD ["bash", "-l"]
Run Code Online (Sandbox Code Playgroud)
果然它适用于:
docker run -it my-image:tag
Run Code Online (Sandbox Code Playgroud)
为了tmux使用颜色,~/.tmux.conf我需要:
set -g default-terminal "screen-256color"
Run Code Online (Sandbox Code Playgroud)
对于 UTF-8 支持tmux,在我的~/.bashrc:
alias tmux='tmux -u'
Run Code Online (Sandbox Code Playgroud)
我的 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"]
Run Code Online (Sandbox Code Playgroud)
Dockerfile 基于Fedora 26构建一个镜像,更新它,安装一些包(Git、Vim、golang 和 tmux),安装 Vim 的病原体插件,然后从这里安装一个 Git 存储库vim-go-ide,最后执行对一些配置文件进行一些调整以使颜色和 UTF-8 正常工作。您只需要添加持久存储,可能安装在 /app/go 下。
如果你有一个已经安装了所有开发工具的镜像,只需创建一个DockerfilewithENV语句并在RUN没有安装命令的语句中添加修改配置文件的命令,并在FROM语句中使用你的基础镜像。我更喜欢这个解决方案,因为我很懒惰并且(除了初始设置)它可以在您想要运行图像时节省输入。
| 归档时间: |
|
| 查看次数: |
20815 次 |
| 最近记录: |