Berdasarkan jawaban VonC, saya menambahkan yang berikut ke Dockerfile saya (yang memungkinkan saya menjalankan wadah tanpa mengetikkan variabel lingkungan pada baris perintah setiap saat):
ENV TERM xterm-256color
#... more stuff
CMD ["bash", "-l"]
Dan tentu saja itu bekerja dengan:
docker run -it my-image:tag
Untuk tmux
untuk bekerja dengan warna, di ~/.tmux.conf
saya Saya membutuhkan:
set -g default-terminal "screen-256color"
dan untuk dukungan UTF-8 di tmux
, di ~/.bashrc
saya :
alias tmux='tmux -u'
Dockerfile saya:
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 membuat image berdasarkan Fedora 26, memperbaruinya, menginstal beberapa paket (Git, Vim, golang, dan tmux), menginstal plugin patogen untuk Vim, lalu menginstal repositori Git dari sini vim-go-ide dan akhirnya melakukannya beberapa penyesuaian pada beberapa file konfigurasi untuk mendapatkan warna dan UTF-8 berfungsi dengan baik. Anda hanya perlu menambahkan penyimpanan persisten, mungkin dipasang di bawah /app/go.
Jika Anda memiliki gambar dengan semua alat pengembangan sudah terpasang, buat saja Dockerfile
dengan ENV
dan tambahkan perintah untuk memodifikasi file konfigurasi dalam RUN
pernyataan tanpa perintah instalasi dan gunakan gambar dasar Anda di FROM
penyataan. Saya lebih suka solusi ini karena saya malas dan (selain penyiapan awal) menghemat pengetikan saat Anda ingin menjalankan gambar.
Menggunakan Vim dan plugin dalam tmux
Menambahkan -t berfungsi untuk saya:
docker exec -t vendor/bin/phpunit
Menambah jawaban VonC, saya membuat fungsi Bash ini:
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 melaporkan bahwa docker run
dengan env
lakukan pekerjaan:
docker run --rm -it -e "TERM=xterm-256color" govim bash -l
Dan Fernando Correia menambahkan di komentar:
Untuk mendapatkan dukungan warna dan membuat
tmux
berfungsi, saya menggabungkan kedua contoh:
docker exec -it my-container env TERM=xterm-256color script -q -c "/bin/bash" /dev/null
Seperti yang dikomentari chepner (jawaban sebelumnya), .bash_profile
bersumber (ini adalah shell interaktif), sejak bash_prompt
dipanggil oleh .bash_profile
.
Tetapi masalah buruh pelabuhan 9299 mengilustrasikan TERM
itu tampaknya tidak langsung disetel, memaksa pengguna untuk membuka bash lain dengan:
docker exec -ti test env TERM=xterm-256color bash -l
Anda memiliki masalah warna yang mirip dengan masalah 8755.
Untuk mengilustrasikan/mereproduksi masalah:
docker exec -ti $CONTAINER_NAME tty
not a tty
Solusi saat ini adalah :
docker exec -ti `your_container_id` script -q -c "/bin/bash" /dev/null
Keduanya menganggap Anda memiliki wadah yang sedang berjalan terlebih dahulu, yang mungkin tidak nyaman di sini.