Загружаем каталог…
Загружаем каталог…
오늘 팀 실습에서는 Frontend, Backend, Database를 각각 나누어 구성하고, EC2에서 Docker Compose로 실행한 뒤 하나의 서비스로 연결해보았다. 나는 Database를 구성하면서 PostgreSQL(pgvector) 컨테이너를 실행했는데, docker compose up 단계에서 바로 오류가 발생했다. 문제 상황 EC2에 .env , compose.yml , init.sql 을 준비한 뒤 Database 컨테이너를 실행했다. docker compose --env-file .env -f compose.yml up -d 그런데 PostgreSQL 컨테이너가 실행되지 않고 다음 오류가 발생했다. Error response from daemon: Conflict. The container name "/aidevs-pgvector" is already in use 기존 컨테이너와 이름이 충돌해 실행에 실패했고, compose.yml 에서 컨테이너 이름을 변경한 뒤 team-pgvector 가 정상적으로 시작됐다. 오류 메시지에서 눈에 들어온 부분은 Conflict 와 already in use 였다. DB 자체가 실행되지 않는 문제가 아니라, 같은 이름의 컨테이너가 이미 존재하고 있다는 의미였다. 원인 이번에 실행하려던 Compose에서도 PostgreSQL 컨테이너 이름으로 aidevs-pgvector 를 사용하고 있었다. 그런데 EC2에는 기존 실습에서 실행한 aidevs-pgvector 컨테이너가 이미 존재하고 있었다. 결국 하나의 EC2에서 서로 다른 용도의 컨테이너가 같은 이름을 사용하려 하면서 충돌이 발생한 것이었다. 기존 컨테이너도 사용 중이었기 때문에 삭제하는 대신 새로 실행할 DB 컨테이너의 이름을 분리 하기로 했다. 해결 compose.yml 을 열어 새로운 DB 컨테이너의 이름을 team-pgvector 로 변경했다. nano compose.yml 수정한 뒤 다시 실행했다. docker compose --env-file .env -f compose.yml up -d 이번에는 Container team-pgvector Started 가 출력되면서 새로운 컨테이너가 정상적으로 실행됐다. 이후 상태를 다시 확인했다. docker compose --env-file .env -f compose.yml ps 처음에는 Up 4 seconds (health: starting) 이었지만 잠시 후 다시 확인하자 Up 49 seconds (healthy) 로 변경됐다. 단순히 컨테이너가 Started 된 것에서 끝내지 않고 실제로 DB가 정상 상태가 되었는지까지 확인했다. DB 내부까지 확인 컨테이너가 정상적으로 실행된 뒤 PostgreSQL에 직접 접속했다. docker exec -it team-pgvector psql -U agent_user -d agent_db 그리고 필요한 테이블이 생성되어 있는지 확인했다. \dt simple_multi_llm.* 결과: Schema | Name | Type | Owner -----------------|---------------|-------|----------- simple_multi_llm | chat_messages | table | agent_user simple_multi_llm | notes | table | agent_user team-pgvector 가 healthy 상태가 된 것을 확인한 뒤 PostgreSQL에 접속해 chat_messages , notes 테이블까지 확인했다. chat_messages , notes 테이블까지 확인하면서 컨테이너 실행뿐 아니라 실제 DB 구성까지 정상적으로 되어 있는 것을 확인했다. 이번에 알게 된 점 Docker Compose를 처음 배울 때는 compose.yml 에 정의한 서비스를 실행하는 것에만 집중했는데, 하나의 EC2에서 여러 실습 환경을 직접 운영해보니 이미 존재하는 컨테이너의 이름과 포트도 함께 확인해야 한다는 것 을 알게 됐다. 특히 이번처럼 기존 실습 DB aidevs-pgvector + 새로운 팀 실습 DB aidevs-pgvector 처럼 서로 다른 DB라도 컨테이너 이름이 같으면 충돌할 수 있었다. 그래서 새로운 Compose 환경을 실행하기 전에는 docker ps docker ps -a 로 기존 컨테이너를 먼저 확인하는 것이 좋다. 그리고 충돌이 발생했다고 기존 컨테이너를 바로 삭제하기보다는 기존 컨테이너가 필요한지 먼저 확인하고, 필요하다면 새로운 컨테이너의 이름과 포트를 분리하는 것이 안전하다. 정리 이번 오류의 흐름은 다음과 같았다. Docker Compose 실행 ↓ Container name Conflict ↓ 기존 컨테이너 확인 ↓ 기존 컨테이너도 필요함 ↓ 새 DB 컨테이너 이름 분리 ↓ team-pgvector 실행 ↓ healthy 확인 ↓ PostgreSQL 접속 ↓ 실제 테이블 확인 처음에는 단순히 Docker Compose로 DB를 실행하는 실습이라고 생각했는데, 여러 서비스를 같은 서버에서 구성하면서 컨테이너를 실행하는 것뿐 아니라 기존 실행 환경과 충돌하지 않도록 관리하는 것도 중요하다 는 것을 직접 확인할 수 있었다. 앞으로 Compose를 실행하다 Conflict 오류가 발생하면 코드나 DB부터 확인하기보다 먼저 기존 컨테이너의 이름과 포트부터 확인해봐야겠다. GitHub 이번 실습에서 배운 Docker Compose와 EC2 실행 환경은 GitHub에도 다시 확인할 수 있도록 정리해두었다. 📂 Docker Compose & EC2 학습 기록 https://github.com/jbbdyee/ai-development-journey/tree/main/DevOps/01-docker-compose-ec2
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
Troubleshooting | Docker Compose로 DB를 띄웠는데 컨테이너 이름이 충돌한 이유. 오늘 팀 실습에서는 Frontend, Backend, Database를 각각 나누어 구성하고, EC2에서 Docker Compose로 실행한 뒤 하나의 서비스로 연결해보았다. 나는 Database를 구성하면서 PostgreSQL(pgvector) 컨테이너를 실행했는데, docker compose up 단계에서 바로 오류가 발생했다. 문제 상황 EC2에 .env , compose.yml , init.sql 을 준비한 뒤 Database 컨테이너를 실행했다. docker compose --env-file .env -f compose.yml up -d 그런데 PostgreSQL 컨테이너가 실행되지 않고…
Открыть источник