微妙に嵌ったのでメモ
- AWS Elastic Beanstalk web applications
- Multicontainer Docker
- Java8 Spring Boot
.ebextensions で設定する方法
.ebextensions/timezone.config
# Dockerホスト(EC2インスタンス)のタイムゾーンを変更
commands:
timezone:
command: ln -f -s /usr/share/zoneinfo/Japan /etc/localtime
- EC2インスタンスのタイムゾーン: 変更される
- Dockerコンテナのタイムゾーン: 変更されない
- Javaアプリのタイムゾーン: 変更されない
Dockerfile に RUN を記述する方法
Dockerfile
# ゲストOSのタイムゾーンを変更
RUN ln -f -s /usr/share/zoneinfo/Japan /etc/localtime
ENTRYPOINT ["java", "-jar", "helloworld.jar"]
- EC2インスタンスのタイムゾーン: 変更されない
- Dockerコンテナのタイムゾーン: 変更される
- Javaアプリのタイムゾーン: 変更されない -> タイミングの問題?
Beanstalk環境プロパティに TZ=Asia/Tokyo
を追加する方法
- EC2インスタンスのタイムゾーン: 変更されない
- Dockerコンテナのタイムゾーン: 変更されない
- Javaアプリのタイムゾーン: 変更される
ENTRYPOINT で起動時引数を渡す方法
Dockerfile
# Javaアプリのタイムゾーンを変更
ENTRYPOINT ["java", "-Duser.timezone=Asia/Tokyo", "-jar", "helloworld.jar"]
- EC2インスタンスのタイムゾーン: 変更されない
- Dockerコンテナのタイムゾーン: 変更されない
- Javaアプリのタイムゾーン: 変更される
※CMDで渡すとオプションの位置が悪い
Dockerfile
CMD ["-Duser.timezone=Asia/Tokyo"]
ENTRYPOINT ["java", "-jar", "helloworld.jar"]
- EC2インスタンスのタイムゾーン: 変更されない
- Dockerコンテナのタイムゾーン: 変更されない
- Javaアプリのタイムゾーン: 変更されない