Dart言語用Docker環境についてメモ書き。
概要
Dart言語を検証するためのDocker環境設定。
DartはクロスプラットフォームFlutterの開発言語。
Dartはシングルバイナリにコンパイルもできる優れもの。複数プラットフォームに対応しているので、これから採用が進むと思う。
前提条件:DockerHubからDartイメージをダウンロードしている事。
dockerfile
イメージビルド用のdockerfileを作成。
FROM dart:2.19.1
WORKDIR /app
COPY pubspec.* ./
RUN dart pub get
パッケージの依存関係を解決できるよう、ローカルディレクトリにpubspec.yamlを用意。
「COPY pubspec.* ./」と「RUN dart pub get」でパッケージを追加できるようにしている。ここら辺の設定はDocker Hubの本家サイトに書いてある。
pubspec.yaml
pubspec.yamlには最低限必要なことのみ記載。
name: darttest
environment:
sdk: '^2.12.0'
docker-compose.yaml
コンテナの設定を記載。
ローカルにappディレクトリを追加し、コンテナでマウントしている。
dartファイルはappディレクトリに置く。そうする事でローカルのdartファイルをコンテナから実行できる。
version: '3'
services:
dt:
build: .
volumes:
- ./app:/app
appディレクトリ配下に実行確認用のtest.dartファイルを作成。
void main(){
print('Hello World');
}
実行確認
コンテナからdartコマンドを実行。
初回なのでビルド後に「Hello World」が出力される。
% docker-compose run --rm dt dart run test.dart
[+] Building 23.1s (9/10)
=> [internal] load build definition from dockerfile 0.0s
=> => transferring dockerfile: 102B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/dart:2.19.1 3.5s
=> [auth] library/dart:pull token for registry-1.docker.io 0.0s
=> [1/4] FROM docker.io/library/dart:2.19.1@sha256:86d317e7e92835424db0263cd0cef52c7317aac51925846ead49178b7108189a 19.5s
=> => resolve docker.io/library/dart:2.19.1@sha256:86d317e7e92835424db0263cd0cef52c7317aac51925846ead49178b7108189a 0.0s
=> => sha256:86d317e7e92835424db0263cd0cef52c7317aac51925846ead49178b7108189a 776B / 776B 0.0s
=> => sha256:3c9996f8ec75117d15046b610d2b93b84f17909c53af89e395965984200a96e1 1.17kB / 1.17kB 0.0s
=> => sha256:e2a1110a7b169f68bbb6f84764a7742fc03f863fdaa244d74eb2ac5e01ebeed6 5.70kB / 5.70kB 0.0s
=> => sha256:f79f8cc5c20d534298dd6317333f38b7691da6d66e063ff10699727982c852be 30.04MB / 30.04MB 5.4s
=> => sha256:875e2c857f9031f1928346d5a7013fef3c248a5ee290ea78540b9ef451786cf9 45.01MB / 45.01MB 10.1s
=> => sha256:d57c837d524850bdc639ce14b14dfc733d64899b719ca687282f76b3db7d6241 1.56MB / 1.56MB 1.0s
=> => sha256:65212c00c6e09623e7f0d937583e3cf5ed9f6b3de7f9883e109302b23f99c962 129.33MB / 129.33MB 16.1s
=> => extracting sha256:f79f8cc5c20d534298dd6317333f38b7691da6d66e063ff10699727982c852be 1.3s
=> => extracting sha256:875e2c857f9031f1928346d5a7013fef3c248a5ee290ea78540b9ef451786cf9 1.5s
=> => extracting sha256:d57c837d524850bdc639ce14b14dfc733d64899b719ca687282f76b3db7d6241 0.1s
=> => extracting sha256:65212c00c6e09623e7f0d937583e3cf5ed9f6b3de7f9883e109302b23f99c962 2.2s
=> [internal] load build context 0.0s
=> => transferring context: 84B 0.0s
=> [2/4] WORKDIR /app 0.6s
=> [3/4] COPY pubspec.* ./ 0.0s
=> [4/4] RUN dart pub get 0.5s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:d8c761fbb6df467b89b40b39df0f883e3fdbbf880ce47bcb3dce3f737af712c7 0.0s
=> => naming to docker.io/library/dart-dt 0.0s
╔════════════════════════════════════════════════════════════════════════════╗
║ The Dart tool uses Google Analytics to report feature usage statistics ║
║ and to send basic crash reports. This data is used to help improve the ║
║ Dart platform and tools over time. ║
║ ║
║ To disable reporting of analytics, run: ║
║ ║
║ dart --disable-analytics ║
║ ║
╚════════════════════════════════════════════════════════════════════════════╝
Hello World
dart用のイメージファイルが作成されている。
% docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
dart-dt latest d8c761fbb6df 2 minutes ago 629MB
mysql_mysqldb latest 3b546580ac85 12 days ago 790MB
postgresql_db latest 6f6640a850ad 2 weeks ago 266MB
コメント