LoginSignup
2
2

More than 5 years have passed since last update.

alpineコンテナでgoバイナリを定期実行するDockerflie

Last updated at Posted at 2018-05-06

初めに

goバイナリを、alpineのDockerイメージの中にポイして、安定して動くようになったので記事にしました。
既にalpineイメージの中でgoバイナリを動かす過程で嵌った記事は幾つかあり、参考にさせて頂くと同時に助かりました。
参考にした記事は、最後に記載しております。
上記に加えてJST時刻設定と定期実行させるためのクーロン設定をDockerfileに追加してみました。

Dockerfile

githubで公開しております。

07行目の箇所は、goのtimeパッケージを使用する際に必要となります。
cron設定は、cron設定ファイルを直接crontabs以下にコピーしています。(詳しくは、上記のgithubのソース参照)

Dockerfile
01 FROM alpine:3.4
02 WORKDIR /app
03 
04 # goバイナリを動かす設定
05 RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
06 RUN apk add --no-cache ca-certificates
07 ADD https://github.com/golang/go/raw/master/lib/time/zoneinfo.zip /usr/local/go/8 lib/time/zoneinfo.zip
08 
09 # JST時刻設定
10 RUN apk --update add tzdata && \
11     cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
12     apk del tzdata && \
13     rm -rf /var/cache/apk/*
14   
15 # バイナリのコピー
16 COPY hello /app
17 
18 # cron設定
19 COPY ./cronenv/root /var/spool/cron/crontabs/root
20 CMD ["crond", "-f", "-d", "8"]

参考記事

goバイナリを動かす設定関連

Docker で Go で作ったバイナリを実行するなるべく小さいコンテナを作る
Dockerのbusybox内でgolangのtimeを使ったらエラーになった

JST時刻設定

Alpine Linux でタイムゾーンを変更する

最後に

AWSのCodePipelineを使用して、上記のようなイメージをビルド・ECRへのPush・EC2へのデプロイをしています。
次回はそれについて書けたらと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2