Skip to content

서버 올리기 ​

autofix 는 정적으로 빌드된 Go 바이너리 하나예요. 데이터베이스가 없고, 기록은 파일 하나(runs.json)에 남아요.

이미지 ​

저장소 루트의 Dockerfile 은 두 단계로 빌드해요.

  1. 빌드: gofmt 검사, go vet, go test 를 통과해야 바이너리를 만들어요. 테스트가 깨지면 이미지가 만들어지지 않아요.
  2. 실행: Alpine 위에 바이너리만 두고, uid 10001 의 app 사용자로 돌아요. ca-certificates·tzdata 가 들어 있어요.
항목값
포트8080 (PORT 로 바꿈)
볼륨/data (DATA_DIR)
헬스 체크GET /healthz → ok, 60초마다

꼭 넣을 것 ​

sh
docker run -d --name autofix --restart unless-stopped -p 8080:8080 \
  -v autofix-data:/data \
  -v /srv/autofix/rules.md:/config/rules.md:ro \
  -e BRIDGE_URL=https://bridge.example.com \
  -e BRIDGE_HOST="내 맥 이름" \
  -e BRIDGE_WORKDIR="~/src" \
  -e BRIDGE_SERVICE_TOKEN=... -e AUTOFIX_TOKEN=... \
  -e VIEW_USER=me -e VIEW_PASSWORD=... \
  -e RULES_FILE=/config/rules.md \
  autofix
  • /data 는 볼륨으로. 없으면 다시 배포할 때 기록이 사라져요. 이름 있는 볼륨은 이미지의 소유자(app, 10001)를 그대로 받아요. 호스트 폴더를 바인드 마운트한다면 그 폴더를 10001 이 쓸 수 있게 해 두세요. 아니면 서버는 뜨지만 첫 트리거에서 500 기록 저장 실패 가 나요.
  • 규칙 파일은 읽기 전용 마운트로. 컨테이너의 app 사용자가 읽을 수 있어야 해요.
  • HTTPS 뒤에 두세요. 기록 화면이 Basic 인증이라 평문 HTTP 로 열면 비밀번호가 그대로 지나가요. 리버스 프록시(Traefik, Caddy, nginx)에서 TLS 를 끝내세요.

전체 목록은 환경 변수를 보세요.

Dokploy 에서 ​

  1. 애플리케이션을 만들고 Git 저장소를 연결해요. 빌드 방식은 Dockerfile, 경로는 Dockerfile 이에요.
  2. Environment 에 환경 변수를 넣어요.
  3. Mounts 에 볼륨(/data)과, 규칙을 쓸 거라면 File Mount(/config/rules.md) 를 더하고 RULES_FILE=/config/rules.md 를 넣어요. 규칙은 Dokploy 화면에서 바로 고칠 수 있고, 다음 실행부터 반영돼요.
  4. Domains 에 도메인을 붙이고 포트 8080, HTTPS 를 켜요.

비공개 저장소의 자동 배포

비공개 저장소는 Dokploy 의 자동 배포가 켜져 있어도 push 로 배포가 걸리지 않는 경우가 있어요. push 뒤에 배포 기록이 안 보이면 직접 Deploy 를 누르세요.

다시 배포할 때 ​

  • 새 컨테이너가 헬스 체크를 통과할 때까지(최대 60초쯤) 옛 컨테이너가 응답해요. 라이브 확인은 그 뒤에 하세요.
  • 진행 중인 실행은 runs.json 에 남아 있어서, 새 컨테이너가 다음 분부터 이어서 지켜봐요. "끝남이 2분 유지" 세기만 처음부터 다시 해요.
  • 필수 환경 변수가 비었거나 규칙 파일을 못 읽으면 새 컨테이너가 뜨지 않아요. 로그 첫 줄에 이유가 있어요.

시작 로그 ​

정상이면 이렇게 한 줄이 찍혀요.

autofix 시작 :8080 (맥 "내 맥 이름", 폴더 "~/src", 규칙 /config/rules.md, 제한 4h0m0s)

규칙 자리에 기본 규칙 이 보이면 RULES_FILE 이 비어 있는 거예요. 토큰이 하나라도 비어 있으면 경고가 한 줄 더 찍히고 그 기능만 꺼져요.

백업 ​

/data/runs.json 하나만 복사하면 돼요. 쓸 때 임시 파일에 쓰고 이름을 바꾸기 때문에, 언제 복사해도 반쯤 쓰인 파일이 되지 않아요. 기록은 최근 200건까지만 남아요.

agent-bridge 의 서비스 API 위에서 도는 자동 대응 서버예요.