증상
Dockerfile에는 EXPOSE를 명시하지 않고 대신 docker-compose.yml에 ports를 설정하였습니다.
그런데 docker-compose run을 하였는데 해당 port가 맵핑되지 않습니다.
docker-compose.yml
version: '2'
services:
myapp:
build: ./myapp
ports:
- "8080:8080"
myapp container실행
$ docker-compose run -d myapp
바인딩된 포트 확인 (아무것도 없음)
$ netstat -nap | grep 8080
원인 및 대책
docker-compose.yml의 ports: 설정은 docker-compose up 명령으로 실행했을 때만 적용됩니다.
docker-compose run 명령 시에도 적용시키고 싶다면 --service-ports 옵션과 함께 실행해야 합니다.
또는 Dockerfile에 EXPOSE를 명시해두면 docker-compose에 ports를 정의할 필요가 없습니다.
myapp container 실행
$ docker-compose run -d --service-ports myapp
$ docker-compose run -d -p 8080:8080 myapp
참고
'Docker' 카테고리의 다른 글
Dockerfile for gstreamer 1.10.4 (0) | 2017.02.28 |
---|---|
Docker port 범위 사용 시 cannot allocate memory 오류 (0) | 2016.07.28 |
Docker 윈도우 공유 폴더 마운트 (4) | 2016.06.16 |
Putty로 윈도우 Docker 이미지 접속하기 (0) | 2016.06.16 |
Docker 모든 컨테이너 삭제 명령 (0) | 2016.06.15 |