【오류 해결】 스프링을 docker로 환경 구축하려고 할 때 발생

목적



오류 발생.
Docker로 개발 환경을 구축했을 때에 만났다.
오류 문장과 해결책을 기억하십시오.

결론



이전에 만든 컨테이너는 프로젝트가 아닌 명령으로 삭제하지 않으면 사라지지 않는 것으로 나타났습니다.
포트 번호에서 오류가 발생한 원인은 확실하지 않습니다.

상황



java의 spring을 docker로 환경 구축을 시도했을 때 발생했습니다.
Flyway를 마이그레이션 도구로 넣었습니다.

【환경 구축】


$ docker-compose up -d
Starting vi_bank_db_1 ... error
ERROR: for vi_bank_db_1  Cannot start service db: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use
$ lsof -i :3306 →何も表示されない

오류


ERROR: for db  Cannot start service db: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use
ERROR: Encountered errors while bringing up the project.
$ docker-compose down
WARNING: Found orphan containers (vi_bank_flyway-repair_1, vi_bank_flyway-info_1, vi_bank_flyway-migrate_1, vi_bank_flyway-clean_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Removing vi_bank_db_1 ... done
Removing network vi_bank_default
$ docker-compose up -d --remove-orphans
Creating network "vi_bank_default" with the default driver
Removing orphan container "vi_bank_flyway-migrate_1"
Removing orphan container "vi_bank_flyway-repair_1"
Removing orphan container "vi_bank_flyway-info_1"
Removing orphan container "vi_bank_flyway-clean_1"
Creating vi_bank_db_1 ... error

ERROR: for vi_bank_db_1  Cannot start service db: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use

ERROR: for db  Cannot start service db: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use

해설



Found orphan containers
같은 프로젝트에 이미 컨테이너가 있어요.
이전에 개인으로 만든 컨테이너가 남아있는 것 같습니다.
Docker에서의 개발 처음이므로 공부가 됩니다.docker-compose up -d 이 실행되지 않는 원인인 것 같습니다.
오류에 따라 명령을 실행합니다.
$ docker-compose up -d --remove-orphans

【해결책】
  • 포트 번호를 3306 → 3307로 변경

  • docker-compose.yml
    
    version: '3.7'
    services:
      db:
        image: mysql:8.0.20
        ports:
          - "3307:3306"
    

    그 후
    $ docker-compose up -d
    Recreating vi_bank_db_1 ... done
    $ docker-compose exec db mysql -u docker -p
    パスワード入力→成功
    mysql>
    

    발생한 오류
    ERROR: for vi_bank_db_1 Cannot start service db: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use

    대처법
    $ lsof -i :3306
    #何も表示されない
    $ docker-compose up -d
    Recreating vi_bank_db_1 ... done
    

    업데이트 201108

    오류 해결



    Gradle의 자바 버전이 설정되지 않았습니다.



    참고한 기사(항상 감사합니다)



    Docker에서 MySQL 사용 [docker container run 옵션]

    Error starting userland proxy: listen tcp0.0.0.0:3306: bind: address already in use

    좋은 웹페이지 즐겨찾기