请访问 最新版 已兼容 Mac M1

Run

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker run -it -d \
--name vs-db \
-p 31005:3306 \
--hostname vs-db \
-e "MYSQL_ROOT_PASSWORD=123456" \
mariadb:latest

docker run -it -d \
--name code-server \
-v /yourpath/www/html:/www/wwwroot/html \
-p 31001:8080 \
-p 31002:22 \
-p 31003:80 \
-p 31004:5050 \
--hostname code-server \
--link vs-db \
xrsec/code-server:arm

其他的配置参考 另外一篇文章
Refer to another article for other configurations

Thanks

View

image-20210212204844971

initialization

Make code-server

1
2
3
4
5
6
7
8
9
10
docker run -it -d \
--name code-server \
--hostname code-server \
--restart on-failure:3 \
-p "31001:8080" \
-p "31002:22" \
-p "31003:8888" \
-p "31004:3306" \
-v "/code-server/www:/www/wwwroot" \
centos:latest /code-server.sh
1
2
3
4
5
6
7
echo -e '#!/bin/bash
echo "start code-server succers"
/bin/bash' > code-server.sh
sudo chmod 777 code-server.sh
sudo chown root code-server.sh
docker cp code-server.sh code-server:/
docker start code-server
1
docker exec -it code-server /bin/bash
1
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
1
2
3
4
5
6
7
yum makecache -y \
&& yum update -y \
&& yum install -y vim zsh openssh-server \
iputils net-tools make cmake gcc gcc-c++ \
libxml2 libxml2-devel git nodejs zip unzip \
wget \
&& yum upgrade
1
docker cp ~/.zshrc code-server:/root/

Install code-server

It seems that arm does not support proxychains,so So you need to download the package first

1
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890
1
2
3
4
cd /root \
&& wget https://github.com/cdr/code-server/releases/download/v3.8.1/code-server-3.8.1-arm64.rpm \
&& rpm -ivh code-server-3.8.1-arm64.rpm \
&& rm code-server-3.8.1-arm64.rpm

Amd64

1
2
wget https://github.com/cdr/code-server/releases/download/v3.8.1/code-server-3.8.1-amd64.rpm
rpm -ivh code-server-3.8.1-amd64.rpm

Other code-server

Inatall BT

1
2
wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
y

Loadding …

1
2
/usr/bin/code-server &
vi ~/.config/code-server/config.yaml

更多细节可以在另外一篇文章查看
More details can be found in another article

Server

1
2
3
4
5
6
7
echo -e '#!/bin/bash
/etc/rc.d/init.d/bt start &
echo "start bt succers"
/etc/rc.d/init.d/bt 14 &
/usr/bin/code-server &
echo "start code-server succers"
/bin/bash' > /code-server.sh
1
chmod 777 /code-server.sh
1
2
exit
docker restart code-server

访问 localhost:31001 和 localhost:31003
visit localhost:31001 And localhost:31003

SSH configuration

1
2
cat /etc/ssh/sshd_config
/usr/sbin/sshd -D &

Docker-compose

image-20210212202753564

Docker-compose.yml

version: "3"
services:
  code-server:
    hostname: code-server
    container_name: code-server
    build:
      context: server
      dockerfile: Dockerfile
    image: code-server:bt
    restart: on-failure:3
    ports:
        - "31001:8080"
        - "31002:22"
        - "31003:8888"
        - "31004:3306"
    volumes:
      - "./www:/www/wwwroot"

networks:
  default:

```ini

### config.yaml

.config/code-server/config.yaml

```ini
bind-addr: 0.0.0.0:8080
auth: password
password: passwd
cert: false

```ini

### .zshrc

```ini
# ~/.zshrc file for zsh interactive shells.
# see /usr/share/doc/zsh/examples/zshrc for examples

source /etc/profile

setopt autocd              # change directory just by typing its name
#setopt correct            # auto correct mistakes
setopt interactivecomments # allow comments in interactive mode
setopt magicequalsubst     # enable filename expansion for arguments of the form ‘anything=expression’
setopt nonomatch           # hide error message if there is no match for the pattern
setopt notify              # report the status of background jobs immediately
setopt numericglobsort     # sort filenames numerically when it makes sense
setopt promptsubst         # enable command substitution in prompt

WORDCHARS=${WORDCHARS//\/} # Don't consider certain characters part of the word

# hide EOL sign ('%')
PROMPT_EOL_MARK=""

# configure key keybindings
bindkey -e                                        # emacs key bindings
bindkey ' ' magic-space                           # do history expansion on space
bindkey '^[[3;5~' kill-word                       # ctrl + Supr
bindkey '^[[3~' delete-char                       # delete
bindkey '^[[1;5C' forward-word                    # ctrl + ->
bindkey '^[[1;5D' backward-word                   # ctrl + <-
bindkey '^[[5~' beginning-of-buffer-or-history    # page up
bindkey '^[[6~' end-of-buffer-or-history          # page down
bindkey '^[[H' beginning-of-line                  # home
bindkey '^[[F' end-of-line                        # end
bindkey '^[[Z' undo                               # shift + tab undo last action

# enable completion features
autoload -Uz compinit
compinit -d ~/.cache/zcompdump
zstyle ':completion:*:*:*:*:*' menu select
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # case insensitive tab completion

# History configurations
HISTFILE=~/.zsh_history
HISTSIZE=1000
SAVEHIST=2000
setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE
setopt hist_ignore_dups       # ignore duplicated commands history list
setopt hist_ignore_space      # ignore commands that start with space
setopt hist_verify            # show command with history expansion to user before running it
#setopt share_history         # share command history data

# force zsh to show the complete history
alias history="history 0"

# make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
 # We have color support; assume it's compliant with Ecma-48
 # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
 # a case would tend to support setf rather than setaf.)
 color_prompt=yes
    else
 color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PROMPT=$'%F{%(#.blue.green)}┌──${debian_chroot:+($debian_chroot)──}(%B%F{%(#.red.blue)}%n%(#.💀.㉿)%m%b%F{%(#.blue.green)})-[%B%F{reset}%(6~.%-1~/…/%4~.%5~)%b%F{%(#.blue.green)}]\n└─%B%(#.%F{red}#.%F{blue}$)%b%F{reset} '
    RPROMPT=$'%(?.. %? %F{red}%B⨯%b%F{reset})%(1j. %j %F{yellow}%B⚙%b%F{reset}.)'

    # enable syntax-highlighting
    if [ -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ] && [ "$color_prompt" = yes ]; then
 . /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
 ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern)
 ZSH_HIGHLIGHT_STYLES[default]=none
 ZSH_HIGHLIGHT_STYLES[unknown-token]=fg=red,bold
 ZSH_HIGHLIGHT_STYLES[reserved-word]=fg=cyan,bold
 ZSH_HIGHLIGHT_STYLES[suffix-alias]=fg=green,underline
 ZSH_HIGHLIGHT_STYLES[global-alias]=fg=magenta
 ZSH_HIGHLIGHT_STYLES[precommand]=fg=green,underline
 ZSH_HIGHLIGHT_STYLES[commandseparator]=fg=blue,bold
 ZSH_HIGHLIGHT_STYLES[autodirectory]=fg=green,underline
 ZSH_HIGHLIGHT_STYLES[path]=underline
 ZSH_HIGHLIGHT_STYLES[path_pathseparator]=
 ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]=
 ZSH_HIGHLIGHT_STYLES[globbing]=fg=blue,bold
 ZSH_HIGHLIGHT_STYLES[history-expansion]=fg=blue,bold
 ZSH_HIGHLIGHT_STYLES[command-substitution]=none
 ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter]=fg=magenta
 ZSH_HIGHLIGHT_STYLES[process-substitution]=none
 ZSH_HIGHLIGHT_STYLES[process-substitution-delimiter]=fg=magenta
 ZSH_HIGHLIGHT_STYLES[single-hyphen-option]=fg=magenta
 ZSH_HIGHLIGHT_STYLES[double-hyphen-option]=fg=magenta
 ZSH_HIGHLIGHT_STYLES[back-quoted-argument]=none
 ZSH_HIGHLIGHT_STYLES[back-quoted-argument-delimiter]=fg=blue,bold
 ZSH_HIGHLIGHT_STYLES[single-quoted-argument]=fg=yellow
 ZSH_HIGHLIGHT_STYLES[double-quoted-argument]=fg=yellow
 ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]=fg=yellow
 ZSH_HIGHLIGHT_STYLES[rc-quote]=fg=magenta
 ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]=fg=magenta
 ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]=fg=magenta
 ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]=fg=magenta
 ZSH_HIGHLIGHT_STYLES[assign]=none
 ZSH_HIGHLIGHT_STYLES[redirection]=fg=blue,bold
 ZSH_HIGHLIGHT_STYLES[comment]=fg=black,bold
 ZSH_HIGHLIGHT_STYLES[named-fd]=none
 ZSH_HIGHLIGHT_STYLES[numeric-fd]=none
 ZSH_HIGHLIGHT_STYLES[arg0]=fg=green
 ZSH_HIGHLIGHT_STYLES[bracket-error]=fg=red,bold
 ZSH_HIGHLIGHT_STYLES[bracket-level-1]=fg=blue,bold
 ZSH_HIGHLIGHT_STYLES[bracket-level-2]=fg=green,bold
 ZSH_HIGHLIGHT_STYLES[bracket-level-3]=fg=magenta,bold
 ZSH_HIGHLIGHT_STYLES[bracket-level-4]=fg=yellow,bold
 ZSH_HIGHLIGHT_STYLES[bracket-level-5]=fg=cyan,bold
 ZSH_HIGHLIGHT_STYLES[cursor-matchingbracket]=standout
    fi
else
    PROMPT='${debian_chroot:+($debian_chroot)}%n@%m:%~%# '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    TERM_TITLE=$'\e]0;${debian_chroot:+($debian_chroot)}%n@%m: %~\a'
    ;;
*)
    ;;
esac

new_line_before_prompt=yes
precmd() {
    # Print the previously configured title
    print -Pnr -- "$TERM_TITLE"

    # Print a new line before the prompt, but only if it is not the first line
    if [ "$new_line_before_prompt" = yes ]; then
 if [ -z "$_NEW_LINE_BEFORE_PROMPT" ]; then
     _NEW_LINE_BEFORE_PROMPT=1
 else
     print ""
 fi
    fi
}

# enable color support of ls, less and man, and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
    alias diff='diff --color=auto'
    alias ip='ip --color=auto'

    export LESS_TERMCAP_mb=$'\E[1;31m'     # begin blink
    export LESS_TERMCAP_md=$'\E[1;36m'     # begin bold
    export LESS_TERMCAP_me=$'\E[0m'        # reset bold/blink
    export LESS_TERMCAP_so=$'\E[01;33m'    # begin reverse video
    export LESS_TERMCAP_se=$'\E[0m'        # reset reverse video
    export LESS_TERMCAP_us=$'\E[1;32m'     # begin underline
    export LESS_TERMCAP_ue=$'\E[0m'        # reset underline

    # Take advantage of $LS_COLORS for completion as well
    zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
fi

# some more ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'

# enable auto-suggestions based on the history
if [ -f /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh ]; then
    . /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
    # change suggestion color
    ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=#999'
fi
export LANG=zh_CN.UTF-8
export LC_CTYPE="zh_CN.UTF-8"
# export PATH="/usr/local/opt/gnu-getopt/bin:$PATH"


```ini

## Bug

1. 如果bt安装失败,建议进入容器安装并注释
   If BT installation fails, it is recommended to enter the container installation and comment

![image-20210212211702669](https://xrsec.s3.bitiful.net/IMG/20210212211703876093.png?fmt=webp&q=48)

# ************************************

## Use docker-image

> XRSec has the right to modify and interpret this article. If you want to reprint or disseminate this article, you must ensure the integrity of this article, including all contents such as copyright notice. Without the permission of the author, the content of this article shall not be modified or increased or decreased arbitrarily, and it shall not be used for commercial purposes in any way