Docker로 서버 실행 시 localhost로도 접속 안되는 오류 해결 방법

이호영·2020년 6월 13일
3

AWS(Linux)를 이용해 Node.js의 무중단 배포 환경을 구성하며 경험한 Docker 오류


AWS 환경

os : linux (AMI : amzn-ami-hvm-2018.03.0.20200206.0-x86_64-gp2 (ami-0ecd78c22823e02ef))
docker version : 19.03.6-ce, build 369ce74
docker-compose version : 1.23.2, build 1110ad01
Node.js verions : v12.16

# Dockerfile
FROM node:12.16

MAINTAINER 

VOLUME ["/tp/TP_nodejs"]

COPY ./tp/TP_nodejs/package.json /tp/TP_nodejs/

COPY ./start-server.sh /usr/local/bin
RUN ln -s /usr/local/bin/start-server.sh /start-server.sh
CMD ["start-server.sh"]
# docker-compose.yml
version: '2'

services:
	TP_nodejs:
    	image: tp_nodejs-image
        volumes:
        	- /home/ec2-user/docker-image/tp/TP_nodejs:/tp/TP_nodejs
        ports:
        	- "3000:3000"
# start-server.sh
#!/bin/bash

cd /tp/TP_nodejs
yarn install
yarn start
// app.js
const express = require('express');
const app = express();

const options = {
	host: "127.0.0.1",
    port: 3000
}

app.get("/", (req, res) => res.send("hello world!"));
app.listen(options, () => console.log(`http://${options.host}:${options.port}`));

발생한 오류

docker ps와 docker logs로 확인해도 정상적으로 작동중인 것을 확인 할 수 있는데, 정상적으로 접속되는지 테스트 하면 접속이 되질 않는다.


해결 방법

docker를 처음 사용하다보니 뭐가 문제인지 잘 몰랐다. 서버는 정상적으로 작동하니 docker 문제라고 생각했고 Dockerfile과 docker-compose.yml 두개의 파일 문제로 작동이 안되는 줄 알고 docker를 재설치 해보고 몇시간동안 삽질하다가 스택오버플로우에서 관련된 글을 발견했고 아주 쉽게 해결했다.

app.js에서 options로 설정한 host를 "127.0.0.1"에서 "0.0.0.0"으로 변경해주면 해결된다. (내 시간 ㅠㅠ)

profile
안녕하세요!

1개의 댓글

comment-user-thumbnail
2023년 6월 2일

저도 같은 증상 겪다가 포스팅덕에 쉽게 해결했네요ㅠ 감사합니다!

답글 달기