Bash History Trong Docker Container

Chào mọi người, Mình đọc viblo đã lâu nhưng chưa hề có bài viết chia sẽ nào vì hôm nay mình khá rảnh nên viết 1 bài lảm nhảm với các bạn Như mọi người cũng biết hiện nay nhà nhà docker, người người docker, docker hiện tại là công cụ sử dụng hàng ngày

Chào mọi người,

Mình đọc viblo đã lâu nhưng chưa hề có bài viết chia sẽ nào vì hôm nay mình khá rảnh nên viết 1 bài lảm nhảm với các bạn 😄

Như mọi người cũng biết hiện nay nhà nhà docker, người người docker, docker hiện tại là công cụ sử dụng hàng ngày có khi thà cả ngày chả làm được chút output nào ngoài việc đánh docker command build/run và nhìn màn hình 😄.
Hiện tại mình đang sài docker như 1 development environment, nhưng mình không thích việc mỗi lần exit container và 1 lúc sau start lại hoặc build lại image bị mất tất cả previous command của mình. vì vậy mình không thể đánh ctrl+R để search hay ctr+P/ctr+N để quay lại command trước đó, quá mệt mỏi 😥

Nên mình đã thử search cách nào để giữ được history trong docker.ok mở bài vậy đủ rồi vào chủ đề chính nào 😄

Đầu tiên, làm sao bash lưu previous commands của mình? là do có 1 biến tên là HISTFILE nó sẽ lưu đường dẫn tới 1 file text mà trong đó chưa bash history, default path là $HOME/.bash_history nếu container của bạn chạy shell khác như ZSH, FISH,… thì cũng phải tìm ra cái file mà shell đó input history.

Cách 1- Sử docker file và docker-compose
Docker file:

# make bash history persistentSNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=~/commandhistory/.bash_history"&&mkdir ~/commandhistory &&touch ~/commandhistory/.bash_history &&echo$SNIPPET>> ~/.bashrc

Sao đó bạn vào docker-compose thêm persistent volume cho container của để khi restart container để không bị mất file history.
Docker compose:

    dev-env:
        extends: cx-env
        volumes:
            - ${HOME}/.ra6/commandhistory:${HOME}/commandhistory

Cách 2:
bạn có thể truyền enviroment dô trong command start, một lưu ý ở đây là bạn đã tạo folder commandhistory hoặc bạn có thể để bashhistory ở ngay workspace.

docker exec -it -e HISTFILE=/commandhistory/.bash_history -v ${HOME}/commandhistory:${HOME}/commandhistory <image>

nếu sài zsh bạn có thể thêm mấy cái sau .zshrc rồi copy vào container 😄:

exporthistfile=~/.zsh_history
exporthistsize=50000exportsavehist=$((1.2* savehist ))# zsh recommended valueexporthisttimeformat="[%f %t] "
setopt inc_append_history extended_history hist_find_no_dups hist_verify

Vậy thôi, chào các bạn nhé… 😄

Nguồn: viblo.asia

Bài viết liên quan

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=

Bài 1 – React Native DevOps các khái niệm và các cài đặt căn bản

Hướng dẫn setup jenkins agent để bắt đầu build mobile bằng jenkins cho devloper an t

Chuyển đổi từ monolith sang microservices qua ví dụ

1. Why microservices? Microservices là kiến trúc hệ thống phần mềm hướng dịch vụ,