Skip to content

Instantly share code, notes, and snippets.

@nphsu
Created October 24, 2018 02:51
Show Gist options
  • Save nphsu/a05c640092aa13887c74036c23773c7d to your computer and use it in GitHub Desktop.
Save nphsu/a05c640092aa13887c74036c23773c7d to your computer and use it in GitHub Desktop.

1章 Dockerの復習

Dockerコンテナの設計

  • 1コンテナにつき1プロセス
  • Immutable Infrastructureなイメージにする
  • 軽量なDockerイメージにする
    • yumやaptでパッケージをインストールした後のキャッシュファイルやリポジトリのパッケージリストなどの削除
    • Alpine Linuxなど軽量なディストリビューションを利用する
  • 実行ユーザをroot以外にする

Dockerfileの書き方

FROM golang:1.10.1-alpine3.7

EXPOSE 8080

COPY ./main.go ./

RUN go build -o ./go-app ./main.go

USER nobody

ENTRYPOINT["./go-app"]

RUN

ビルド時にコンテナ状でコマンドを実行する命令する。

ENTRYPOINT

書き換える必要のない部分を定義する。

CMD

デフォルトの引数などを定義する。 例えば、ENTRYPOINTに/bin/sleepを指定し、CMDにはsleepする秒数を指定するなど。

マルチステージビルド

# アプリケーションをビルド
FROM golang:1.10.1-alpine3.7 as builder
COPY ./main.go ./
RUN go build -o /go-app ./main.go
# ビルドしたバイナリを内包した実行用コンテナを作成
FROM alpine:3.7
EXPOSE 8080
COPY --from=builder /go-app .
ENTRYPOINT ["./go-app"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment