Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3e913215f1 | |||
| 96141a2f97 | |||
| 24179ff666 | |||
| 1158047f6f | |||
| 2a1bac7666 | |||
| 9eda3ac981 | |||
| b1688d45a8 | |||
| 5c7ccf4f4f | |||
| ed14758b6b | |||
| e01366ede1 | |||
| 1fe510105a | |||
| ede14fd99b | |||
| f4ec37b97c | |||
| b504790438 | |||
| 28a83e30f5 | |||
| 1d36cdba41 | |||
| 33b6b3013a |
29
.gitea/workflows/docker.yaml
Normal file
29
.gitea/workflows/docker.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
name: Build Docker Image
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
Explore-Gitea-Actions:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: https://git.martin98.com/actions/checkout.git@v4
|
||||
|
||||
- name: Log in to Docker Hub
|
||||
uses: https://git.martin98.com/actions/login-action.git@v3
|
||||
with:
|
||||
registry: ${{ vars.DOCKER_HUB }}
|
||||
username: ${{ vars.DOCKER_USERNAME }}
|
||||
password: ${{ vars.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Build and push
|
||||
uses: https://git.martin98.com/actions/build-push-action.git@v4
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64
|
||||
push: true
|
||||
tags: |
|
||||
docker.martin98.com/martin_farm/init:latest
|
||||
docker.martin98.com/martin_farm/init:${{ github.sha }}
|
||||
3
Dockerfile
Normal file
3
Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
||||
FROM scratch
|
||||
|
||||
COPY *.sh /scripts/
|
||||
42
README.md
42
README.md
@@ -5,43 +5,47 @@
|
||||
curl -sSL https://git.martin98.com/MartinFarm/init/raw/branch/main/init-apt.sh | bash
|
||||
# docker-ce
|
||||
curl -sSL https://git.martin98.com/MartinFarm/init/raw/branch/main/init-docker.sh | bash
|
||||
# npm
|
||||
curl -sSL https://git.martin98.com/MartinFarm/init/raw/branch/main/init-npm.sh | bash
|
||||
# pip
|
||||
curl -sSL https://git.martin98.com/MartinFarm/init/raw/branch/main/init-pip.sh | bash
|
||||
# git
|
||||
curl -sSL https://git.martin98.com/MartinFarm/init/raw/branch/main/init-git.sh | bash
|
||||
|
||||
|
||||
# 初始化全部
|
||||
curl -sSL https://git.martin98.com/MartinFarm/init/raw/branch/main/init-all.sh | bash
|
||||
```
|
||||
|
||||
#### Python 镜像源配置测试
|
||||
|
||||
```bash
|
||||
pip config set global.index-url https://mirrors.martin98.com/repository/pypi-group/simple
|
||||
```
|
||||
|
||||
#### NPM
|
||||
|
||||
```bash
|
||||
npm config set registry https://mirrors.martin98.com/repository/npm-group/
|
||||
```
|
||||
|
||||
##### docker 容器中
|
||||
```bash
|
||||
RUN --mount=type=cache,target=/var/cache/apt \
|
||||
--mount=type=cache,target=/var/lib/apt \
|
||||
sed -i '6,$d' /etc/apt/sources.list.d/dhttps://mirrors.mebian.sources && \
|
||||
sed -i 's|http://deb.debian.org/debian|artin98.com/repository/debian-tsinghua/|g' /etc/apt/sources.list.d/debian.sources && \
|
||||
apt update && \
|
||||
apt install -y --no-install-recommends \
|
||||
gcc \
|
||||
g++ \
|
||||
python3-dev
|
||||
```
|
||||
#### dockerfile
|
||||
|
||||
#### 进入容器
|
||||
```bash
|
||||
docker compose run debian bash
|
||||
```
|
||||
```bash
|
||||
docker compose run ubuntu bash
|
||||
COPY --from=docker.martin98.com/martin_farm/init:latest /scripts /scripts
|
||||
RUN /scripts/init-apt.sh
|
||||
```
|
||||
|
||||
#### APT 镜像源配置测试
|
||||
|
||||
```bash
|
||||
docker compose run debian ./init-apt.sh
|
||||
docker compose run debian ./init-all.sh
|
||||
```
|
||||
|
||||
```bash
|
||||
docker compose run ubuntu ./init-apt.sh
|
||||
docker compose run ubuntu ./init-all.sh
|
||||
```
|
||||
|
||||
```bash
|
||||
docker compose run ubuntu-2204 ./init-all.sh
|
||||
```
|
||||
@@ -13,4 +13,8 @@ services:
|
||||
|
||||
ubuntu:
|
||||
<<: *app-config
|
||||
image: docker.martin98.com/library/ubuntu:latest
|
||||
image: docker.martin98.com/library/ubuntu:latest
|
||||
|
||||
ubuntu-2204:
|
||||
<<: *app-config
|
||||
image: docker.martin98.com/library/ubuntu:22.04
|
||||
26
init-all.sh
26
init-all.sh
@@ -1,6 +1,28 @@
|
||||
#!/bin/bash
|
||||
|
||||
download_and_run() {
|
||||
local filename="$1"
|
||||
local url="https://git.martin98.com/MartinFarm/init/raw/branch/main/$1"
|
||||
|
||||
if [ ! -f "$filename" ]; then
|
||||
echo "文件 $filename 不存在,正在下载..."
|
||||
curl -sSL "$url" -o "$filename"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "下载失败,请检查网络连接或URL是否正确。"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
bash "$filename"
|
||||
}
|
||||
|
||||
|
||||
# apt + ntp
|
||||
curl -sSL https://git.martin98.com/MartinFarm/init/raw/branch/main/init-apt.sh | bash
|
||||
download_and_run "init-apt.sh"
|
||||
# docker-ce
|
||||
curl -sSL https://git.martin98.com/MartinFarm/init/raw/branch/main/init-docker.sh | bash
|
||||
download_and_run "init-docker.sh"
|
||||
# npm
|
||||
download_and_run "init-npm.sh"
|
||||
# pip
|
||||
download_and_run "init-pip.sh"
|
||||
# git
|
||||
download_and_run "init-git.sh"
|
||||
70
init-apt.sh
70
init-apt.sh
@@ -1,41 +1,69 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 配置 ubuntu 源
|
||||
if [ -f /etc/apt/sources.list.d/ubuntu.sources ]; then
|
||||
cat > /etc/apt/sources.list.d/ubuntu.sources <<EOF
|
||||
Types: deb
|
||||
URIs: https://mirrors.martin98.com/repository/ubuntu-tsinghua/
|
||||
Suites: noble noble-updates noble-backports
|
||||
Components: main restricted universe multiverse
|
||||
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
|
||||
APT_OPTIONS="-o Acquire::https::mirrors.martin98.com::Verify-Peer=false -o Acquire::https::mirrors.martin98.com::Verify-Host=false"
|
||||
|
||||
type=$(cat /etc/*release | grep ^ID= | cut -d= -f2)
|
||||
release=$(cat /etc/*release | grep VERSION_CODENAME | cut -d= -f2)
|
||||
components=$([ "${type}" = "debian" ] && echo "main contrib non-free non-free-firmware" || ([ "${type}" = "ubuntu" ] && echo "main restricted universe multiverse"))
|
||||
|
||||
# DEB822 格式
|
||||
# docker.martin98.com/library/ubuntu:latest
|
||||
# docker.martin98.com/library/debian:latest
|
||||
if [ -f /etc/apt/sources.list.d/${type}.sources ]; then
|
||||
cat > /etc/apt/sources.list.d/${type}.sources <<EOF
|
||||
$(for suite in ${release} ${release}-updates ${release}-backports; do
|
||||
echo "Types: deb"
|
||||
echo "URIs: https://mirrors.martin98.com/repository/${type}-tsinghua-${suite}/"
|
||||
echo "Suites: $suite"
|
||||
echo "Components: ${components}"
|
||||
echo "Signed-By: /usr/share/keyrings/${type}-archive-keyring.gpg"
|
||||
echo ""
|
||||
echo "Types: deb-src"
|
||||
echo "URIs: https://mirrors.martin98.com/repository/${type}-tsinghua-${suite}/"
|
||||
echo "Suites: $suite"
|
||||
echo "Components: ${components}"
|
||||
echo "Signed-By: /usr/share/keyrings/${type}-archive-keyring.gpg"
|
||||
echo ""
|
||||
done)
|
||||
EOF
|
||||
# 配置 debian 源
|
||||
elif [ -f /etc/apt/sources.list.d/debian.sources ]; then
|
||||
cat > /etc/apt/sources.list.d/debian.sources <<EOF
|
||||
Types: deb
|
||||
URIs: https://mirrors.martin98.com/repository/debian-tsinghua/
|
||||
Suites: bookworm bookworm-updates bookworm-backports
|
||||
Components: main contrib non-free non-free-firmware
|
||||
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||
# 传统格式
|
||||
# docker.martin98.com/library/ubuntu:22.04
|
||||
elif [ -f /etc/apt/sources.list ]; then
|
||||
cat > /etc/apt/sources.list <<EOF
|
||||
$(for suite in ${release} ${release}-updates ${release}-backports; do
|
||||
echo "deb https://mirrors.martin98.com/repository/${type}-tsinghua-${suite}/ ${suite} ${components}"
|
||||
echo "deb-src https://mirrors.martin98.com/repository/${type}-tsinghua-${suite}/ ${suite} ${components}"
|
||||
done)
|
||||
EOF
|
||||
else
|
||||
echo "没有找到合适的源"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
|
||||
# 更新证书
|
||||
APT_OPTIONS="-o Acquire::https::mirrors.martin98.com::Verify-Peer=false -o Acquire::https::mirrors.martin98.com::Verify-Host=false"
|
||||
apt update $APT_OPTIONS && apt install $APT_OPTIONS -y ca-certificates && update-ca-certificates
|
||||
apt update $APT_OPTIONS && apt install $APT_OPTIONS -y ca-certificates curl && update-ca-certificates
|
||||
apt update && apt upgrade -y
|
||||
|
||||
|
||||
# NTP
|
||||
# 启用阿里云 ntp
|
||||
apt install chrony -y
|
||||
cat > /etc/chrony.conf <<EOF
|
||||
if pidof systemd >/dev/null 2>&1; then
|
||||
apt install chrony -y
|
||||
cat > /etc/chrony.conf <<EOF
|
||||
server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst
|
||||
server ntp5.aliyun.com iburst
|
||||
driftfile /var/lib/chrony/drift
|
||||
allow 127.0.0.1
|
||||
EOF
|
||||
systemctl restart chrony && systemctl enable chrony
|
||||
systemctl restart chrony && systemctl enable chrony
|
||||
else
|
||||
echo "systemctl 不存在,跳过 chrony 的重启"
|
||||
fi
|
||||
|
||||
# fix vim 粘贴
|
||||
if pidof vim >/dev/null 2>&1; then
|
||||
if ! grep -q "set pastetoggle=" ~/.vimrc; then
|
||||
echo "set pastetoggle=" >> ~/.vimrc
|
||||
fi
|
||||
fi
|
||||
@@ -3,15 +3,22 @@
|
||||
command_exists() {
|
||||
command -v "$@" > /dev/null 2>&1
|
||||
}
|
||||
is_wsl() {
|
||||
case "$(uname -r)" in
|
||||
*microsoft* ) true ;; # WSL 2
|
||||
*Microsoft* ) true ;; # WSL 1
|
||||
* ) false;;
|
||||
esac
|
||||
}
|
||||
|
||||
if command_exists docker; then
|
||||
echo "docker 已安装.... 跳过"
|
||||
( set -x; sleep 5 )
|
||||
if is_wsl; then
|
||||
echo "检测到 WSL 环境,建议使用 Docker Desktop."
|
||||
exit 0
|
||||
elif command_exists docker; then
|
||||
echo "Docker 已安装.... 跳过安装"
|
||||
else
|
||||
curl -sSL https://git.martin98.com/MartinFarm/init/raw/branch/main/docker-install.sh | sh
|
||||
fi
|
||||
|
||||
cat > /etc/docker/daemon.json <<EOF
|
||||
cat > /etc/docker/daemon.json <<EOF
|
||||
{
|
||||
"registry-mirrors": [
|
||||
"https://docker.martin98.com",
|
||||
@@ -20,5 +27,9 @@ cat > /etc/docker/daemon.json <<EOF
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
sudo systemctl restart docker
|
||||
if pidof systemd >/dev/null 2>&1; then
|
||||
systemctl restart docker
|
||||
else
|
||||
echo "systemctl 不存在,跳过 docker 重启。"
|
||||
fi
|
||||
fi
|
||||
12
init-git.sh
Normal file
12
init-git.sh
Normal file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 检查 git 是否安装
|
||||
if command -v git > /dev/null 2>&1; then
|
||||
echo "git 已安装,正在配置镜像源..."
|
||||
# 曾经设置过的强制取消
|
||||
git config --global --unset url."https://git-proxy.hk.martin98.com/".insteadOf
|
||||
git config --global url."https://git-proxy.hk.martin98.com/https://github.com/".insteadOf "https://github.com/"
|
||||
echo "镜像源配置完成。"
|
||||
else
|
||||
echo "git 不存在,跳过..."
|
||||
fi
|
||||
11
init-npm.sh
Normal file
11
init-npm.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 检查 npm 是否安装
|
||||
|
||||
if command -v npm > /dev/null 2>&1; then
|
||||
echo "npm 已安装,正在配置镜像源..."
|
||||
npm config set registry https://mirrors.martin98.com/repository/npm-group/
|
||||
echo "镜像源配置完成。"
|
||||
else
|
||||
echo "npm 不存在,跳过..."
|
||||
fi
|
||||
10
init-pip.sh
Normal file
10
init-pip.sh
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 检查 pip 是否安装
|
||||
if command -v pip > /dev/null 2>&1; then
|
||||
echo "pip 已安装,正在配置镜像源..."
|
||||
pip config set global.index-url https://mirrors.martin98.com/repository/pypi-group/simple
|
||||
echo "镜像源配置完成。"
|
||||
else
|
||||
echo "pip 不存在,跳过..."
|
||||
fi
|
||||
Reference in New Issue
Block a user