add
This commit is contained in:
30
docker/archlinux/.dockerignore
Normal file
30
docker/archlinux/.dockerignore
Normal file
@ -0,0 +1,30 @@
|
||||
# Git
|
||||
.git
|
||||
.gitignore
|
||||
|
||||
# Documentation
|
||||
*.md
|
||||
docs/
|
||||
|
||||
# Temporary files
|
||||
*.tmp
|
||||
*.temp
|
||||
*.log
|
||||
|
||||
# Cache
|
||||
.cache/
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
|
||||
# Node.js
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
|
||||
# Build artifacts
|
||||
build/
|
||||
dist/
|
||||
target/
|
56
docker/archlinux/Dockerfile
Normal file
56
docker/archlinux/Dockerfile
Normal file
@ -0,0 +1,56 @@
|
||||
FROM archlinux:latest
|
||||
|
||||
# ミラーリストを更新して高速化
|
||||
RUN pacman -Sy --noconfirm reflector && \
|
||||
reflector --country Japan --latest 5 --sort rate --save /etc/pacman.d/mirrorlist
|
||||
|
||||
# システム更新と基本パッケージのインストール
|
||||
RUN pacman -Syu --noconfirm && \
|
||||
pacman -S --noconfirm \
|
||||
base-devel \
|
||||
git \
|
||||
vim \
|
||||
neovim \
|
||||
nodejs \
|
||||
npm \
|
||||
python \
|
||||
python-pip \
|
||||
go \
|
||||
rust \
|
||||
docker \
|
||||
wget \
|
||||
curl \
|
||||
jq \
|
||||
ripgrep \
|
||||
fd \
|
||||
bat \
|
||||
exa \
|
||||
zsh \
|
||||
openssh \
|
||||
sudo \
|
||||
&& pacman -Scc --noconfirm
|
||||
|
||||
# 非rootユーザーを作成(wheel グループに追加)
|
||||
RUN useradd -m -G wheel -s /bin/zsh claude && \
|
||||
echo 'claude ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
|
||||
|
||||
# AURヘルパー (yay) をインストール
|
||||
USER claude
|
||||
WORKDIR /home/claude
|
||||
RUN git clone https://aur.archlinux.org/yay.git && \
|
||||
cd yay && \
|
||||
makepkg -si --noconfirm && \
|
||||
cd .. && \
|
||||
rm -rf yay
|
||||
|
||||
# 作業ディレクトリの設定
|
||||
WORKDIR /workspace
|
||||
|
||||
# 必要に応じてClaude Codeをインストール
|
||||
# RUN curl -fsSL https://... | sh
|
||||
|
||||
# デフォルトシェルをzshに
|
||||
SHELL ["/bin/zsh", "-c"]
|
||||
|
||||
# コンテナ起動時のコマンド
|
||||
CMD ["/bin/zsh"]
|
115
docker/archlinux/README.md
Normal file
115
docker/archlinux/README.md
Normal file
@ -0,0 +1,115 @@
|
||||
# Claude Code Arch Linux Docker環境
|
||||
|
||||
安全なClaude Code実行環境をArch LinuxベースのDockerコンテナで提供します。
|
||||
|
||||
## クイックスタート
|
||||
|
||||
```bash
|
||||
# イメージのビルド
|
||||
./run.sh build
|
||||
|
||||
# コンテナの起動
|
||||
./run.sh start
|
||||
|
||||
# シェルに接続
|
||||
./run.sh shell
|
||||
```
|
||||
|
||||
## 機能
|
||||
|
||||
- **最新のArch Linux**ベース
|
||||
- **非rootユーザー** (claude) での実行
|
||||
- **開発ツール**プリインストール
|
||||
- Node.js, Python, Go, Rust
|
||||
- Git, Neovim, ripgrep, fd
|
||||
- yay (AURヘルパー)
|
||||
- **リソース制限**設定済み
|
||||
- **ボリューム永続化**
|
||||
- pacmanキャッシュ
|
||||
- yayキャッシュ
|
||||
|
||||
## セキュリティ機能
|
||||
|
||||
- 非特権コンテナ
|
||||
- リソース制限 (CPU: 2コア, メモリ: 4GB上限)
|
||||
- ネットワーク分離
|
||||
- 読み取り専用オプション対応
|
||||
|
||||
## 使い方
|
||||
|
||||
### 基本コマンド
|
||||
|
||||
```bash
|
||||
# ビルド
|
||||
./run.sh build
|
||||
|
||||
# 起動
|
||||
./run.sh start
|
||||
|
||||
# 接続
|
||||
./run.sh shell
|
||||
|
||||
# 停止
|
||||
./run.sh stop
|
||||
|
||||
# 完全削除
|
||||
./run.sh clean
|
||||
```
|
||||
|
||||
### Docker Compose直接使用
|
||||
|
||||
```bash
|
||||
# バックグラウンドで起動
|
||||
docker-compose up -d
|
||||
|
||||
# ログ確認
|
||||
docker-compose logs -f
|
||||
|
||||
# コンテナに入る
|
||||
docker-compose exec -u claude claude-arch /bin/zsh
|
||||
|
||||
# 停止
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
## カスタマイズ
|
||||
|
||||
### より厳格なセキュリティ
|
||||
|
||||
`docker-compose.yml`で以下のコメントを解除:
|
||||
|
||||
```yaml
|
||||
read_only: true
|
||||
tmpfs:
|
||||
- /tmp
|
||||
- /run
|
||||
- /home/claude/.cache
|
||||
```
|
||||
|
||||
### Docker in Docker
|
||||
|
||||
Dockerソケットのマウントを有効化:
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
```
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### pacmanエラー
|
||||
|
||||
```bash
|
||||
# コンテナ内で実行
|
||||
sudo pacman -Sy archlinux-keyring
|
||||
sudo pacman-key --refresh-keys
|
||||
```
|
||||
|
||||
### 権限エラー
|
||||
|
||||
ホストのファイルの所有者を確認:
|
||||
|
||||
```bash
|
||||
# UID/GIDの確認
|
||||
docker-compose exec claude-arch id
|
||||
```
|
104
docker/archlinux/docker-compose.yml
Normal file
104
docker/archlinux/docker-compose.yml
Normal file
@ -0,0 +1,104 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
claude-arch:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
image: claude-archlinux:latest
|
||||
container_name: claude-arch-sandbox
|
||||
hostname: claude-arch
|
||||
|
||||
# ボリュームマウント
|
||||
volumes:
|
||||
# プロジェクトディレクトリをマウント
|
||||
- ../../:/workspace:rw
|
||||
# ホームディレクトリの設定ファイルを共有(オプション)
|
||||
- ~/.config/nvim:/home/claude/.config/nvim:ro
|
||||
- ~/.zshrc:/home/claude/.zshrc:ro
|
||||
# Dockerソケット(Docker in Dockerを使う場合)
|
||||
# - /var/run/docker.sock:/var/run/docker.sock
|
||||
# pacmanキャッシュを永続化(ダウンロード時間短縮)
|
||||
- pacman-cache:/var/cache/pacman/pkg
|
||||
# yayキャッシュを永続化
|
||||
- yay-cache:/home/claude/.cache/yay
|
||||
|
||||
# 環境変数
|
||||
environment:
|
||||
- LANG=ja_JP.UTF-8
|
||||
- TZ=Asia/Tokyo
|
||||
- TERM=xterm-256color
|
||||
# Claude Code用の環境変数
|
||||
- CLAUDE_SAFE_MODE=true
|
||||
- CLAUDE_CONTAINER=true
|
||||
|
||||
# リソース制限
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '2'
|
||||
memory: 4G
|
||||
reservations:
|
||||
cpus: '1'
|
||||
memory: 2G
|
||||
|
||||
# セキュリティオプション
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
# AppArmorプロファイル(利用可能な場合)
|
||||
# - apparmor:docker-default
|
||||
|
||||
# ネットワーク設定
|
||||
networks:
|
||||
- claude-net
|
||||
|
||||
# 対話型シェルの有効化
|
||||
stdin_open: true
|
||||
tty: true
|
||||
|
||||
# 読み取り専用ルートファイルシステム(より安全だが制限的)
|
||||
# read_only: true
|
||||
# tmpfs:
|
||||
# - /tmp
|
||||
# - /run
|
||||
# - /home/claude/.cache
|
||||
|
||||
# ユーザー指定
|
||||
user: claude
|
||||
|
||||
# ヘルスチェック
|
||||
healthcheck:
|
||||
test: ["CMD", "echo", "healthy"]
|
||||
interval: 30s
|
||||
timeout: 3s
|
||||
retries: 3
|
||||
|
||||
# 開発用データベース(必要に応じて)
|
||||
# postgres:
|
||||
# image: postgres:15-alpine
|
||||
# container_name: claude-postgres
|
||||
# environment:
|
||||
# POSTGRES_DB: dev
|
||||
# POSTGRES_USER: claude
|
||||
# POSTGRES_PASSWORD: claude-dev-pass
|
||||
# volumes:
|
||||
# - postgres-data:/var/lib/postgresql/data
|
||||
# networks:
|
||||
# - claude-net
|
||||
|
||||
# ボリューム定義
|
||||
volumes:
|
||||
pacman-cache:
|
||||
driver: local
|
||||
yay-cache:
|
||||
driver: local
|
||||
# postgres-data:
|
||||
# driver: local
|
||||
|
||||
# ネットワーク定義
|
||||
networks:
|
||||
claude-net:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.25.0.0/24
|
94
docker/archlinux/run.sh
Executable file
94
docker/archlinux/run.sh
Executable file
@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
# Claude Code Arch Linux Docker環境の起動スクリプト
|
||||
|
||||
set -e
|
||||
|
||||
# カラー出力の定義
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 使用方法の表示
|
||||
usage() {
|
||||
echo "使用方法: $0 [オプション]"
|
||||
echo "オプション:"
|
||||
echo " build - Dockerイメージをビルド"
|
||||
echo " start - コンテナを起動"
|
||||
echo " stop - コンテナを停止"
|
||||
echo " shell - コンテナ内でシェルを起動"
|
||||
echo " clean - コンテナとボリュームを削除"
|
||||
echo " logs - コンテナのログを表示"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Dockerイメージのビルド
|
||||
build() {
|
||||
echo -e "${GREEN}Arch Linux Dockerイメージをビルドしています...${NC}"
|
||||
docker-compose build --no-cache
|
||||
echo -e "${GREEN}ビルド完了!${NC}"
|
||||
}
|
||||
|
||||
# コンテナの起動
|
||||
start() {
|
||||
echo -e "${GREEN}コンテナを起動しています...${NC}"
|
||||
docker-compose up -d
|
||||
echo -e "${GREEN}起動完了!${NC}"
|
||||
echo -e "${YELLOW}シェルに接続するには: $0 shell${NC}"
|
||||
}
|
||||
|
||||
# コンテナの停止
|
||||
stop() {
|
||||
echo -e "${YELLOW}コンテナを停止しています...${NC}"
|
||||
docker-compose down
|
||||
echo -e "${GREEN}停止完了!${NC}"
|
||||
}
|
||||
|
||||
# シェルへの接続
|
||||
shell() {
|
||||
echo -e "${GREEN}Arch Linuxコンテナに接続しています...${NC}"
|
||||
docker-compose exec -u claude claude-arch /bin/zsh
|
||||
}
|
||||
|
||||
# クリーンアップ
|
||||
clean() {
|
||||
echo -e "${RED}警告: この操作はコンテナとボリュームを削除します!${NC}"
|
||||
read -p "続行しますか? (y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
docker-compose down -v
|
||||
echo -e "${GREEN}クリーンアップ完了!${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}キャンセルしました${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# ログの表示
|
||||
logs() {
|
||||
docker-compose logs -f claude-arch
|
||||
}
|
||||
|
||||
# メイン処理
|
||||
case "$1" in
|
||||
build)
|
||||
build
|
||||
;;
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
shell)
|
||||
shell
|
||||
;;
|
||||
clean)
|
||||
clean
|
||||
;;
|
||||
logs)
|
||||
logs
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
Reference in New Issue
Block a user