どうやらdocker-composeを使ったほうが便利にbuildできるらしい
基本的な構造は下記とのこと(GPTさん曰く)
version: '3.8' # Docker Composeのバージョン
services: # ここにコンテナ(サービス)を定義する
web: # サービス名
image: nginx:latest # 使用するイメージ
ports:
- "80:80" # ポートマッピング(ホスト:コンテナ)
volumes:
- ./html:/usr/share/nginx/html # ボリュームマウント(ホスト:コンテナ)
app: # 別のサービス
build: ./app # Dockerfileのあるディレクトリパス
environment:
- APP_ENV=production # 環境変数
networks: # ネットワークの定義(必要に応じて)
app-network:
driver: bridge
volumes: # ボリュームの定義(必要に応じて)
db-data:
driver: local
とりあえずそれっぽいファイルを作成した
今回の目的はpythonが3.7のときに作成したコードの動作確認。
seleniumが4.0.0でないと動かなく、pyenvとかvenvを使うのもの面倒、、、
またaws lambdaにはコンテナでpushしているため実働に近い環境で動作確認ができるのも良いと思い、dockerで対応することにした。
version: '3.8'
services:
app:
image: sample
build:
context: .
dockerfile: ./container/python/Dockerfile
working_dir: /var/task
volumes:
- ./express/src:/var/task
command: ls
tty: true
これでdocker composeのversion が3.8のapp(仮称)というサービスが./container/python/DockerfileディレクトリにあるDockerfileを参照してbuildしてくれるはず
ということで下記コマンドを実行
docker-compose up --d
動作を確認するために下記コマンドを実行
docker-compose ps
これで動いているコンテナを確認できる
このコンテナに接続して中身を確認する
docker compose exec app bash
こんな感じで接続できた
・lsコマンドでディレクトリ内に必要なフォルダがあるか
・pwdコマンドでどこのディレクトリにいるか
上記2点を確認した
これで正常にdocker composeを用いて作成したコンテナに接続し、処理をすることができた.
docker buildして、runして、exec -it みたいな複数のターミナルをまたぐ作業よりもコマンド2つでできることが便利と思いました。