20211015のdockerに関する記事は4件です。

Docker - PostgreSQLでpsqlコマンドを実行する方法

docker exec -it container_name (or container id) psql -U POSTGRES_USER -W POSTGRES_DB このコマンドを用いればDocker環境を通してPostgreSQLに接続できます。 docker exec -it : 現在起動しているコンテナに対して実行できるコマンド -itオプションはかんたんに説明するとインタラクティブにコマンドを操作できますよというオプションを表します。 詳しくはdocker公式を参考にしてください。 container_name:コンテナの名前 (あるいはコンテナのID) psql -U POSTGRES_USER -W POSTGRES_DB:現在起動しているコンテナを実行するためのコマンド U:データベースのユーザー名の指定 W:データベースにアクセスするためにパスワードの入力が必須であることを知らせる。詳しくはpostgreの公式 参考文献 Docker - How can run the psql command in the postgres container?
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

DockerでAmazonLinux環境を構築し、そこでインストールしたPythonライブラリをLambdaレイヤーにアップ

前提 ・Docker使える状態 ・AWSサービス使える状態 ①amazon linuxのイメージを取得 docker pull amazonlinux ②Dockerfileを作成 FROM amazonlinux:latest RUN yum install -y python3 zip RUN mkdir /home/deploy ③docker-compose.ymlを作成 docker-compose.yml version: '2' services: app: build: . volumes: - './deploy:/home/deploy' command: > bash -c "pip3 install -r /home/deploy/requirements.txt -t /home/deploy/python && cd /home/deploy && /usr/bin/zip -r bs4.zip python" ④ディレクトリを作成 今回は、Dockerfileとymlに記載したディレクトリ名と合わせてdeployというディレクトリと、その下にこちらは決め打ちのpythonというディレクトリを作成します。 ⑤pip installするライブラリを記述したrequirement.txtを作成しdeployディレクトリ配下に置く。 今回はwebスクレイピングで使うbs4とrequestsを記述します。まずはbs4のみ。 requirements.text bs4 ⑥ディレクトリ構成の確認 $ tree ├── Dockerfile ├── deploy │ ├── python │ └── requirements.txt └── docker-compose.yml ⑦Lambdaレイヤーにアップロードするパッケージを取得 下記をコマンド実行します。 docker-compose up --build ⑧もう一つのパッケージを作るために③と⑤を編集し⑦を実行(必要なパッケージが一つだけなら不要) docker-compose.yml version: '2' services: app: build: . volumes: - './deploy:/home/deploy' command: > bash -c "pip3 install -r /home/deploy/requirements.txt -t /home/deploy/python && cd /home/deploy && /usr/bin/zip -r requests.zip python" requirements.text requests docker-compose up --build ⑨レイヤーの作成 ⑧までに作成したパッケージをアップロードします。 ※ランタイムは3.7以下にします。3.8以上はamazonlinux2でないといけないので本記事の対象外です。 ⑩レイヤーの追加 先ほどの⑨で作ったレイヤーを動かしたいLambda関数に追加します。 種類はカスタムレイヤーで選択します。 ⑪Lambdaを動かしてみる まずはレイヤーを作らなかった時の失敗例をご覧ください。bs4やrequestsは元々Lambdaに用意されていないのでエラーになります。 続きましてレイヤーを追加した成功例です。今回はライブラリがimportできているので、目的の口コミスクレイピングが出来ています。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dev container features (preview) が便利すぎる

VScode Remote Containers の新機能 Dev container features について紹介します。 VSCode Remote Containers とは Docker コンテナを開発環境として使用するための VSCode 拡張機能です。 コンテナ内に開発環境を構築することで、PC の環境を汚さずにプロジェクトごとに言語やツールを使い分けることができます。 また、Dockerfile で開発環境を定義できるためチーム内で開発環境を共有することが容易になります。 Qiita 等に紹介記事がたくさんあるため詳しい説明や使い方については割愛します。 Dev container features とは 9月のアップデート (VSCode v1.61, Remote - Containers v0.202) で追加された新機能 (preview) です。 開発用コンテナ (以下 DevContainer と呼びます) に追加の機能 (feature) のセットアップを簡単に行えるというものです。 例えば、よく使われる CLI や言語のインストールを行うことができます。 上記のドキュメントに記載されている通り、> Remote-Containers: Add Development Container Configuration Files で新規の DevContainer を作成する際にチェックボックスで有効にする features を選択することができるようになっています。 作成済みの DevContainer の場合は devcontainer.json に次のような数行の設定を書くことで features を利用できます(設定の変更後は DevContainer の Rebuild が必要です)。 devcontainer.json { "features": { "golang": "latest" } } feature 紹介 利用できる feature のうち、よく使いそうなものを簡単に紹介します。 最新の Git を使えるようにする DevContainer では Debian 系の OS をベースにすることが多い (多くの言語の公式イメージが Debian ベースであるため) と思いますが、Debian では古いバージョンの Git しか利用できず困った方が多いのではないでしょうか。 そんな時は git feature を使うことでソースからビルドした Git を簡単に利用することができます。 devcontainer.json { "features": { "git": { "version": "latest" } } } Node.js をインストールする Web アプリケーション開発ではバックエンドで使用するメインの言語に加えてフロントエンド用に Node.js もインストールしたいというケースが結構あると思います。 node feature を利用すれば簡単にセットアップが可能で、バージョン指定も行えます。 devcontainer.json { "features": { "node": { "version": "lts" } } } DevContainer の中で Docker CLI を利用できるようにする docker-from-docker feature で簡単にセットアップできます。 ただし DevContainer 内での Docker CLI の利用にはいくつか注意すべき点があるのでこちらの記事も参照してみてください。 devcontainer.json { "features": { "docker-from-docker": { "version": "latest" } } } その他 GitHub CLI や kubectl + helm + minikube、terraform など定番の CLI も feature でセットアップ可能です。 利用できる feature の探し方 Development Container Scripts (後述) の一覧から探すことができます。 各 script のドキュメントに Feature use の記載があれば feature が利用可能です。 Development Container Scripts との比較 従来は DevContainer に追加する言語や CLI のセットアップには Development Container Scripts を利用するのが一般的でした。 これは microsoft/vscode-dev-containers リポジトリの script-library ディレクトリ以下で配布されているスクリプトで、Dockerfile から呼び出すことによって、DevContainer に追加の言語や CLI などをセットアップすることができるというものです。 公式で定義された DevContainer を利用すると、ものによっては .devcontainer/library-scripts/ 以下に Development Container Scripts がコピーされることがあるので意識せずに利用しているケースもあると思います。 新機能の Dev container features は Development Container Scripts とほぼ同一のもので、多くの Development Container Scripts が features としても利用可能になっています。 利用者目線での両者の違いを簡単にまとめてみました。 Development Container Scripts Dev container features 設定 複雑 簡単 スクリプトの管理 必要 不要 スクリプトのバージョン固定 可能 不可能 カスタマイズ性 低い (多くの引数をサポート、改造も可能) 低い (利用可能なオプションが少ない) 一番のポイントは 「スクリプトそのものを管理する必要があるかどうか」 という点です。 Development Container Scripts の場合、一般的にはローカルにスクリプトをダウンロードし、Dockerfile で COPY, RUN して利用します。 問題なのはこのローカルに保存したスクリプトを更新したくなることがあり、その作業が結構面倒だということです。 (私の実体験として、ruby のセットアップを行う ruby-debian.sh が壊れてしまい、更新せざるを得なくなったことがあります) Dev container features の場合、必要なのは devcontainer.json の設定だけでスクリプトそのものを保持しておく必要がないため、面倒な更新作業を行う必要はありません。 一方で使用されるスクリプトのバージョンを明示的に指定することはできないため、ある日突然壊れてしまった場合に古いバージョンに固定するなどの対応はできないというデメリットはあります。 また、カスタマイズ性という点においては Development Container Scripts の方に軍配が上がります。 Dev container features は preview ということもあってか、現時点では利用可能なオプションが Development Container Scripts に比べて少ないものが多いようです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

DockerでGO,Gin環境構築

前提条件 Dockerがインストール済み 手順 フォルダ構成の作成 go - web - Dockerfile - main.go - docker-compose.yml Dockerfileの記述 Dockerfile FROM golang:latest WORKDIR /go/src docker-compose.yml version: '3' services: web: build: ./web tty: true volumes: - ./web:/go/src ports: - "3000:3000" Docker起動~サーバーの起動まで VSCodeのDocker拡張を使ってる場合は1,2番はGUIでもできます。 1.docker起動 docker-compose up 2.コンテナに入る(別ターミナルで) docker-compose exec web bash 3.ginモジュールの追加 go mod init go get github.com/gin-gonic/gin 4.main.goの記述 main.go package main import ( "github.com/gin-gonic/gin" ) func main() { router := gin.Default() router.GET("/", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "Hello World", }) }) router.Run(":3000") } 5.サーバーの起動 go run main.go 確認 ブラウザで「localhost:3000」にアクセス jsonの内容が表示されれば完了です。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む