Go Echo Framework Default Docker 이미지 만들기
기본 Echo 코드 작성
package main
import (
"net/http"
"github.com/labstack/echo"
"github.com/labstack/echo/middleware"
)
func main() {
// Echo instance
e := echo.New()
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
// Routes
e.GET("/", hello)
// Start server
e.Logger.Fatal(e.Start(":1323"))
}
// Handler
func hello(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}
Go app image 만들기
https://hub.docker.com/_/golang
Dockerfile 작성
FROM golang:1.13-alpine
ENV GO111MODULE=on
WORKDIR /src
COPY . /src
RUN go build -o Go_Echo_Default
EXPOSE 1323
CMD ["./Go_Echo_Default"]
Docker build
KDS-2:main kimdaesung$ docker build -t go_echo:1.0.5 .
Sending build context to Docker daemon 17.41kB
Step 1/7 : FROM golang:1.13-alpine
1.13-alpine: Pulling from library/golang
c9b1b535fdd9: Already exists
cbb0d8da1b30: Already exists
d909eff28200: Already exists
568dff2a5e9e: Already exists
0aed2559ef8d: Already exists
Digest: sha256:1ff752199f17b70e5f4dc2ad7f3e7843c456eb7e1407ed158ed8c237dbf1476a
Status: Downloaded newer image for golang:1.13-alpine
---> e1fd9820be16
Step 2/7 : ENV GO111MODULE=on
---> Running in ae9698c21f23
Removing intermediate container ae9698c21f23
---> a3d2dce9f3b5
Step 3/7 : WORKDIR /src
---> Running in 1a0621ba90d3
Removing intermediate container 1a0621ba90d3
---> 76effcd3a009
Step 4/7 : COPY . /src
---> bbbf2b9ac054
Step 5/7 : RUN go build -o Go_Echo_Default
---> Running in 62c5b976a374
go: downloading github.com/labstack/echo v3.3.10+incompatible
go: extracting github.com/labstack/echo v3.3.10+incompatible
go: downloading github.com/labstack/gommon v0.3.0
go: downloading github.com/dgrijalva/jwt-go v3.2.0+incompatible
go: downloading github.com/valyala/fasttemplate v1.1.0
go: downloading golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073
go: extracting github.com/labstack/gommon v0.3.0
go: extracting github.com/valyala/fasttemplate v1.1.0
go: downloading github.com/mattn/go-colorable v0.1.2
go: downloading github.com/mattn/go-isatty v0.0.9
go: downloading github.com/valyala/bytebufferpool v1.0.0
go: extracting github.com/dgrijalva/jwt-go v3.2.0+incompatible
go: extracting github.com/mattn/go-colorable v0.1.2
go: extracting github.com/valyala/bytebufferpool v1.0.0
go: extracting github.com/mattn/go-isatty v0.0.9
go: downloading golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a
go: extracting golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073
go: downloading golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3
go: extracting golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3
go: downloading golang.org/x/text v0.3.0
go: extracting golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a
go: extracting golang.org/x/text v0.3.0
go: finding github.com/labstack/echo v3.3.10+incompatible
go: finding github.com/labstack/gommon v0.3.0
go: finding github.com/dgrijalva/jwt-go v3.2.0+incompatible
go: finding github.com/valyala/fasttemplate v1.1.0
go: finding github.com/mattn/go-colorable v0.1.2
go: finding github.com/mattn/go-isatty v0.0.9
go: finding github.com/valyala/bytebufferpool v1.0.0
go: finding golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a
go: finding golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073
go: finding golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3
go: finding golang.org/x/text v0.3.0
Removing intermediate container 62c5b976a374
---> e709005ab453
Step 6/7 : EXPOSE 1323
---> Running in cb7ff805286c
Removing intermediate container cb7ff805286c
---> d2f951647398
Step 7/7 : CMD ["./Go_Echo_Default"]
---> Running in 00d8904a6c43
Removing intermediate container 00d8904a6c43
---> 04ab29c65b20
Successfully built 04ab29c65b20
Successfully tagged go_echo:1.0.5
Docker images 검증
KDS-2:main kimdaesung$ docker image inspect go_echo:1.0.5
[
{
"Id": "sha256:04ab29c65b202863c99c3598238c24d6110aceed26b16a2ea1ced039eff0b2ff",
"RepoTags": [
"go_echo:1.0.5"
],
"RepoDigests": [],
"Parent": "sha256:d2f95164739848f6494d1c2c0e8d9db3f5be46c5661c0f3d453a12cbf4740b23",
"Comment": "",
"Created": "2020-03-12T10:51:19.0701854Z",
"Container": "00d8904a6c43e95399fa7c06807c8b96f423fe3e482ef6c82a93883b5e07547e",
"ContainerConfig": {
"Hostname": "00d8904a6c43",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"1323/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOLANG_VERSION=1.13.8",
"GOPATH=/go",
"GO111MODULE=on"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"./Go_Echo_Default\"]"
],
"Image": "sha256:d2f95164739848f6494d1c2c0e8d9db3f5be46c5661c0f3d453a12cbf4740b23",
"Volumes": null,
"WorkingDir": "/src",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "19.03.5",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"1323/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOLANG_VERSION=1.13.8",
"GOPATH=/go",
"GO111MODULE=on"
],
"Cmd": [
"./Go_Echo_Default"
],
"Image": "sha256:d2f95164739848f6494d1c2c0e8d9db3f5be46c5661c0f3d453a12cbf4740b23",
"Volumes": null,
"WorkingDir": "/src",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 432228379,
"VirtualSize": 432228379,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/0fa933fed3b8935fc1131211ce004d876085b5fc9bbe65b2a704ef3994582c09/diff:/var/lib/docker/overlay2/649e4600f0e8b4a93703b61ffce7207694ab56baf33fe0f4eec5218cfe7df528/diff:/var/lib/docker/overlay2/c7c8c0f24b0b247012658ef1a6ad6eddab359a0520ee6a578962ad55f7ef7936/diff:/var/lib/docker/overlay2/02273984c97cefcda697f4c2b28610944dbeaae406bae04f24e9cd5f18a31c94/diff:/var/lib/docker/overlay2/ffd90167bef2879e8c01e69b2339e060e73305eec76fe7710b3c3a2305dc2da0/diff:/var/lib/docker/overlay2/ed89157d7b163534a8d1ab0d7a621e33ed817e3c1475b85a9da28cd10b3f6d67/diff:/var/lib/docker/overlay2/d52d38a243cb2043da7702148de6a34f456cc9ef42845566b3ec03fba6ed8333/diff",
"MergedDir": "/var/lib/docker/overlay2/8e2886e14af5a391381e3be0789240eb27ec8d6d66d010ef92f837cfee4dd5d3/merged",
"UpperDir": "/var/lib/docker/overlay2/8e2886e14af5a391381e3be0789240eb27ec8d6d66d010ef92f837cfee4dd5d3/diff",
"WorkDir": "/var/lib/docker/overlay2/8e2886e14af5a391381e3be0789240eb27ec8d6d66d010ef92f837cfee4dd5d3/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:5216338b40a7b96416b8b9858974bbe4acc3096ee60acbc4dfb1ee02aecceb10",
"sha256:45182158f5da0392151d293ad2f09a1ed006db7d5d39f9873ae09d6ec3862a0f",
"sha256:12c4e92b2d4850b87124fb9692ae9be902ac941ef59c71ccd77a1c9d417be9f4",
"sha256:5479b2ea460ec0df1ba2524b1f46eb166c3b549ccdf3f15c34b135fdf7c7599e",
"sha256:2ce78b78017477dcd298e31e979ffde9052898e523eec2a3f244e500a58cce8b",
"sha256:ebb5616cb8e486ad03d9f3beb9582725224a1ae28cbfb75d2d25929ed5fe451d",
"sha256:6c6ec4cf9bd706d2cb36285d58d48cc6a6fd60a64a77527a138ea06b3ebfadfa",
"sha256:746a0c2c51422d53049100ef6b87c6bda17974241e02eb3df56599f5b2f4e841"
]
},
"Metadata": {
"LastTagTime": "2020-03-12T10:51:19.1046518Z"
}
}
]
Image 실행
KDS-2:main kimdaesung$ docker container run -t -p 1323:1323 go_echo:1.0.5
____ __
/ __/___/ / ___
/ _// __/ _ \/ _ \
/___/\__/_//_/\___/ v3.3.10-dev
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
O\
⇨ http server started on [::]:1323
localhost:1323 확인
Docker 이미지 삭제 하는 방법 [-f 강제]
docker rmi -f [이미지 id]
ex)
KDS-2:main kimdaesung$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
go_echo 1.0 12969cf8aa9e 9 minutes ago 371MB
golang 1.13-alpine e1fd9820be16 3 weeks ago 359MB
golang 1.12.1-stretch 213fe73a3852 11 months ago 774MB
golang 1.12.1-alpine c0e5aac9423b 12 months ago 350MB
alpine 3.4 b7c5ffe56db7 13 months ago 4.82MB
KDS-2:main kimdaesung$ docker rmi -f b7c5ffe56db7
Untagged: alpine:3.4
Untagged: alpine@sha256:b733d4a32c4da6a00a84df2ca32791bb03df95400243648d8c539e7b4cce329c
Deleted: sha256:b7c5ffe56db790f91296bcebc5158280933712ee2fc8e6dc7d6c96dbb1632431
Deleted: sha256:23f7bd114e4a0ea39a34e1bd50c2b71fb7d60f89139ca86ee746efb0bb49b4b8
'Docker' 카테고리의 다른 글
Docker Hub에 업로드 하기 (0) | 2020.03.12 |
---|---|
Ubuntu/CentOS Docker 설치하기 (0) | 2020.03.11 |