AWS Elastic Beanstalk for Docker에서 Go 웹 앱을 실행해 보았습니다.
5857 단어 5ebflyElasticBeanstalk도커
그래서 바로 Go로 쓴 웹 앱을 움직여 보았습니다.
여기에서 사용한 소스 코드는 다음에서 구할 수 있습니다.
웹 애플리케이션 만들기
작성하는 웹 애플리케이션은 git으로 관리해야 합니다.
Hello로 출력하기만 하면 됩니다.
package main
import (
"fmt"
"net/http"
)
type Hello struct{}
func (h Hello) ServeHTTP(
w http.ResponseWriter,
r *http.Request) {
fmt.Fprint(w, "Hello!")
}
func main() {
var h Hello
http.ListenAndServe(":8080", h)
}
Dockerfile 및 Dockerrunaws.json 준비
Dockerfile
Ubuntu 14.04를 기반으로 go 환경을 구축하고 있습니다.
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y curl git mercurial make binutils bison gcc build-essential golang
# Set GOPATH/GOROOT environment variables
RUN mkdir -p /go
ENV GOPATH /go
ENV PATH $GOPATH/bin:$PATH
# Set up app
ADD . /app
RUN cd /app && go build hello.go
# Removed unnecessary packages
RUN apt-get autoremove -y
# Clear package repository cache
RUN apt-get clean all
EXPOSE 8080
CMD ["/app/hello"]
Dockerrun.aws.json
Elastic Beanstalk 용 구성 파일입니다.
hello.go
에서 hello.go
포트에서 웹 응용 프로그램을 시작했으므로 여기에서는 8080
를 지정합니다. 8080
와 같은 동작을 합니다. 포트는 여러 개 걸리지만 첫 번째 사람만 바인딩되므로 여러 포트를 기다리는 Docker 파일은 Elastic Beanstalk의 ELB를 통해 사용할 수 없습니다.{
"AWSEBDockerrunVersion": "1",
"Ports": [
{
"ContainerPort": "8080"
}
]
}
git 저장소 준비
세 개의 파일을 동일한 디렉터리로 만들고
docker run -p 8080:8080
git 리포지토리로 관리합니다.애플리케이션 배포
준비가 되었으므로 Elastic Beanstalk에 배포합니다. 이번 애플리케이션 배포에는 졸작ebfly을 이용합니다. Docker 지원은 0.0.7부터이므로 이미 설치한 사용자는 업데이트해야합니다.
$ gem install ebfly
Elastic Beanstalk를 사용하려면 환경 변수에서 액세스 키를 설정하십시오.
$ export AWS_ACCESS_KEY=[your access key]
$ export AWS_SECRET_ACCESS_KEY=[your secret key]
$ export AWS_REGION=us-east-1 # ap-northeast-1 でもOK
애플리케이션 및 Docker environment 만들기
Elastic Beanstalk는 애플리케이션을 작성하고 그 안에 environment (production, staging, dev, ...)를 작성하는 구성이므로 먼저 애플리케이션을 작성합니다. 여기서는 docker라는 응용 프로그램을 만듭니다.
$ ebfly app create docker
응용 프로그램을 만든 후 Docker용 environment를 만듭니다. 현재 Docker 0.9만 지원되므로 다음 명령으로 작성합니다. 여기서는
git init && git add . && git commit -m 'First commit'
라는 환경을 만듭니다.$ ebfly env create web -s docker0.9 -a docker
명령을 치면 environment 의 작성이 시작됩니다만, 이것에 5분 정도 걸립니다.
환경 상태는
web
에서 확인할 수 있습니다. ebfly env info
가 status
가되면 준비가 완료됩니다.$ ebfly env info web -a docker
ebfly env info web -a docker
=== environment info ===
application name: docker
environment id:
environment name: docker-web
description:
status: Ready
health: Green
tier: WebServer Standard 1.0
solution stack name: 64bit Amazon Linux 2014.03 v1.0.2 running Docker 0.9.0
endpoint url: awseb-e-w-AWSEBLoa-956NXWFC8619-1360484152.us-west-1.elb.amazonaws.com
cname:
updated at: 2014-04-25 01:57:49 UTC
배포
다음 명령을 사용하여
Ready
분기를 배포합니다.$ ebfly env push web master -a docker
여기에서도 배포에 10분~20분 정도의 시간이 걸립니다. Docker build가 달리고 있기 때문에 당연하네요. 여기 시간을 단축하고 싶다면 미리 이미지를 만들어 둡시다.
master
에서 상태를 확인하거나 Management Console에서 다음과 같이 배포하면 완료됩니다.앱에 액세스
ebfly env info
로 표시되는 ebfly env info
는 배포된 응용 프로그램의 URL입니다. 브라우저에서 열고 cname
가 표시되는지 확인하십시오.$ ebfly env info web -a docker
=== environment info ===
...
cname: docker-web-1234556677.elasticbeanstalk.com
...
Mac 사용자는
Hello
명령을 사용하면 간단합니다.$ ebfly env open web -a docker
할 수 있었다!
요약
매우 간단하기 때문에 여러분, 다양한 언어로 시도해보십시오.
Reference
이 문제에 관하여(AWS Elastic Beanstalk for Docker에서 Go 웹 앱을 실행해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hakobera/items/cfd8e0241ed860687213텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)