docker-compose를 이용한 golang server 구동
저는 제 개인 인프라에 golang을 gateway로 이용하려고 합니다.
응답이 오면 뒷단의 MSA에서 응답을 받아서 다시 패스하는걸로
그럼과 동시에 docker-compose하여서 사용하는 방식으로 하여 보겠습니다.
1. go server 구동
go-server 띄우는 방식은 제 이전글에서 보시면 됩니다.
2020/03/31 - [Language/Go] - Golang으로 아주 간단하게 HTTP 서버 만들기
Golang으로 아주 간단하게 HTTP 서버 만들기
Go를 이용하여 아주 간단하게 루트(/)를 요청하면 응답이 갈 수 하는 코드 입니다. go-wrapper를 이용하여 구동만 시켜 주면 바로 서버가 됩니다. 1. HandleFunc 이용하기 package main import ( "net/http" ) fun..
mrgamza.tistory.com
2. Dockerfile 만들기
FROM golang:1.8
WORKDIR /go/src/app
COPY main.go main.go
RUN go-wrapper download
RUN go-wrapper install
EXPOSE 5000
CMD ["go-wrapper", "run", "app"]
3. reverse proxy nginx server
upstream app {
server web:5000;
}
server{
listen 80;
access_log /var/log/nginx/access-portus.log;
error_log /var/log/nginx/error-portus.log;
location / {
proxy_pass http://app;
}
}
web이라고 이름을 주고 만들었는데 저의 경우에는 저렇게 하면 저 서버를 찾지 못해서 정상적으로 구동이 되지 않았습니다.
그래서 저는 수기로 ip를 지정하여 주었습니다. 192.168.9.1 이런식으로...
4. docker-compose.yml 파일 만들기
version: '3'
services:
web:
build: .
nginx:
image: nginx:latest
links:
- web:web
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf
command: ['nginx', '-g', 'daemon off;']
ports:
- 80:80
설명을 드리면 web은 build를 하여주게 되는것이고, nginx는 latest버전을 사용하면서 volumes를 같이 사용하도록 되어있습니다.
위에 보면 links에 web을 지정하여 두었는데 잘 안되서... 혹시나 수정되면 바로 수정해둘게요
5. docker-compose 하기
$ sudo docker-comose up
이렇게 하면 docker가 구동이 되고 화면에 로그가 나오게 됩니다. 백그라운드로 구동하고 싶다면 다음과 같이 하세요
$ sudo docker-compose up -d
잘 돌고 있는지 확인 하는것은 다음과 같습니다.
$ sudo docker ps -a
6. test
$ curl localhost:80
Hello World