Docker는 환경 불일치를 줄여주는 좋은 도구이지만,
다른 PC에서 동일한 이미지를 실행하려고 할 때 예상치 못한 문제가 종종 발생한다.
실제 과제 수행 중 겪은 시행착오를 정리한다.
⸻
1. 도커 이미지 옮기기
다른 PC에 Docker Hub 없이 이미지를 옮기고 싶다면 docker save, docker load를 사용한다.
# 기존 PC에서 이미지 저장
docker save -o test-app.tar test-app
# 옮긴 PC에서 이미지 로드
docker load -i test-app.tar
2. MySQL 컨테이너 버전 이슈
버전이 달라지면 실행 자체가 안 되는 경우가 있다.
8.0.41에서 오류가 나고 8.0.36에서는 정상 실행되었던 경험이 있다.
→ 특정 버전을 명시하여 사용하는 것이 안전하다.
# docker-compose.yml 예시
mysql:
image: mysql:8.0.36
3. volume 디렉토리 주의
기존 PC에서 생성된 volume, init-db.sql, data 디렉토리가
다른 PC에서 경로가 맞지 않아 실행 오류가 날 수 있다.
→ 경로를 상대경로로 맞추거나, .env로 설정 관리 필요
4. 포트 충돌
기존 PC에서는 포트 3306, 8080이 비어있었지만
다른 PC에서는 이미 사용 중일 수 있다.
ports:
- "3307:3306" # 외부 포트는 상황에 맞게 수정
실행 후 아래 명령어로 확인 가능
docker ps
5. .env 파일로 유동성 확보
DB 비밀번호, 포트 번호 등은 .env 파일을 활용해 환경마다 다르게 설정할 수 있도록 한다.
# .env 파일
MYSQL_VERSION=8.0.36
MYSQL_PORT=3307
# docker-compose.yml 일부
image: mysql:${MYSQL_VERSION}
ports:
- "${MYSQL_PORT}:3306"
도커는 한 번 설정해두면 어디서든 실행 가능할 것 같지만,
현실은 운영체제, 포트, 이미지 버전, 경로 등 예상보다 많은 변수가 있다.
담엔 삽질 덜 해야지 😙
'BackEnd' 카테고리의 다른 글
| 서버 및 DB 정기 재기동 작업 이유 (1) | 2025.08.03 |
|---|---|
| [JAVA] Broken pipe 에러란 ? 언제 발생하는가? (6) | 2025.06.01 |
| [JAVA]Backend, 안정적인 서비스 운영을 위한 EXCEPTION (2) | 2025.05.04 |
| Docker에서 MySQL 컨테이너가 계속 죽을 때 확인할 것들 (0) | 2025.04.13 |
| SQL 쿼리 튜닝 방법 (0) | 2025.03.30 |