IT技術で仕事を減らしたい!

ITエンジニアのメモ+α

Docker influxDB環境構築

どうも、nippa です。

今回は influxDB 環境を構築したいと思います。

influxDB は時系列データに特化したデータベースで、保存期間を指定できる特徴があります。

オープンソースで、コードは Go 書かれています。

オープンソース influx DB 1.8 系はサポートが 2021 年で終了しているのめ、今回は 2.0 系を利用します。

環境

  • macOS 12.6
  • influx DB 2.6

ディレクトリ構造

ディレクトリ構造は以下の通りです。

docker/[service]/dataに volume で共有するディレクトリを配置する設計になっています。

├── .env
├── docker
│   └── influxdb
│       ├── data
│       └── initdb.d
└── docker-compose.yaml

サービスのポート設定

ポート設定は以下の通りです。

サービス名 host ポート container ポート
influxdb 8086 8086

docker-compose file の作成

version: "3"

services:
  influxdb:
    image: influxdb:latest
    volumes:
      - ./docker/influxdb/data/influxdb2:/var/lib/influxdb2
      - ./docker/influxdb/data/config:/etc/influxdb2
    ports:
      - 8086:8086
    environment:
      - INFLUX_HOST=${INFLUX_URL}
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=${INFLUXDB_USERNAME}
      - DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUXDB_PASSWORD}
      - DOCKER_INFLUXDB_INIT_ORG=${INFLUXDB_ORG}
      - DOCKER_INFLUXDB_INIT_BUCKET=${INFLUXDB_BUCKET}
      - DOCKER_INFLUXDB_INIT_RETENTION=1w
      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUXDB_TOKEN}

DOCKER_INFLUXDB_INIT_MODE=setupで指定すると、環境変数から初期設定が可能です。

DOCKER_INFLUXDB_INIT_RETENTIONでデータの保存期間を設定します。 今回は1週間で指定しています。

.env ファイルの作成

読み込み用の環境変数を.env ファイルに定義します。

INFLUX_URL="http://influxdb:8086"
INFLUXDB_USERNAME="admin"
INFLUXDB_PASSWORD="hogehogehoge"
INFLUXDB_ORG="myorg"
INFLUXDB_BUCKET="test"
INFLUXDB_RETENTION="1w"
INFLUXDB_ADMIN_TOKEN="myadmintoken"

dokcer の起動

docker compose up -d

influx DB

ブラウザでhttp://localhost:8086/にアクセスするとログイン画面が表示されます。

.env で設定した influxDB のユーザ・パスワードでログイン可能です。

influxdbログイン画面

感想

今回、docker で influxDB の環境を構築してみました。

次は client から influxDB を操作してみたいと思います。

ではでは、また次回。

Python Poetry requirements.txtからインストール

どうも、nippa です。

既存の requirements.txt から Poetry 管理に移行する場合の方法を記事にします。

環境

  • macOS 12.6
  • Poetry 1.2.2

Shell スクリプトのコマンドを利用してインストール

その1

poetry add $( cat requirements.txt )

その2

cat requirements.txt | xargs poetry add

余談:Poetry から requirements.txt を作成

requirements.txt の出力が必要なときは、以下のコマンドで作成可能です。

poetry export --format requirements.txt --output requirements.txt

--format(-f)で出力フォーマットを指定できます。Poetry 1.2 現在requirements.txtのみのサポートになっています。

感想

requirements.txt から poetry 管理に移行する必要があり、手動インストールは手間なので今回は Shell コマンドを利用してインストールしてみました。

移行の際には便利なので、ぜひご活用ください。

ではでは、また次回。

macOS HomebrewでGUIアプリの管理

どうも、nippa です。

Homebrew を利用して GUI アプリケーションもインストール可能で、Homebrew を利用して GUI アプリケーションを管理すると便利だと思います。

環境

  • macOS 12.6
  • Homebrew 3.6

Homebrew のインストール

Homebrew 公式ページのインストール手順に沿って、インストールします。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

GUI アプリケーションのインストール方法

--caskオプションを利用することで、GUI アプリケーションを管理することができます。

例として、GoogleChrome をインストールしてみます。

brew install --cask google-chrome

インストールスクリプトの作成

macOS を初期化した際や新しく購入した場合に、アプリケーションを1つ1つインストールするのは手間ですので、GUI アプリケーションのインストール shell スクリプトを作成しておくのをおすすめします。

#/bin/zsh

set -ex

# Browser
brew install --cask google-chrome
brew install --cask microsoft-edge
brew install --cask firefox

# editor
brew install --cask visual-studio-code
brew install --cask obsidian

# Docker Desktop
brew install --cask docker

# Microsoft office
brew install --cask microsoft-office

# tools
brew install --cask clipy
brew install --cask notion
brew install --cask slack
brew install --cask microsoft-teams
brew install --cask postman
brew install --cask google-japanese-ime

# mactex
brew install --cask mactex

このようなスクリプトを作成しておけば、インストールが非常に楽になります。

感想

今回 homebrew での GUI アプリケーションの管理についてまとめてみました。

便利ですので、おすすめします。

ではでは、また次回。

macOSでコピぺを最大活用する

どうも、nippa です。

今更ながらの記事になります。最近、定型文を使うことが多くなり、メモ等に記載したものをコピー&ペイストしていたのですが、それすら億劫になってきました。

そこで、macOS でペイスト機能を最大限利用する方法はないかと調べた結果、Clipyというクリップボードの拡張を知り、その紹介になります。

環境

Clipy のインストール

dmg でのパッケージ配布もありますが、管理が面倒になるので、できる限り Homebrew で管理しています。

今回は Homebrew でインストールを行います。

brew install --cask clipy

--caskオプションは macOS 用の GUI 管理する Homebrew の拡張機能になります。

Clipy の使い方

貼付けする際に、「Shift」+「command」+「v」のショートカット使うことで、コピー歴から選んで貼付けすることができます。デフォルトでのショートカットなので、変更することも可能です。

ショートカット

また、定型文等(スニペット)を登録しておくことで、定型文を貼付けすることも可能です。

スニペットの登録

スニペットに登録することで、定型文等をいつでも貼付けすることができるようになります。

スニペットの編集」→ 「フォルダを追加」(分類が必要な場合)→「スニペットの追加」

で追加することが可能です。

また、登録したスニペットをインポート、エクスポートができるので、他の PC とも共有が可能になります。

感想

作業の効率化のために今回「Clipy」を導入してみましたが、非常に便利です。

是非利用して、効率化を図ってみてください。

ではでは、また次回。

Python Poetryを使ったDocker Imageの作成

どうも、nippa です。

python のパッケージ管理は requirements.txt から完全に poetry に移行しました。

docker image についても poetry に移行するために、Dockerfile を書いてみたいと思います。

Poetry1.2のアップデート情報はこちらの記事にまとめています。

timesaving.hatenablog.com

環境

  • macOS 12.6
  • docker 20.10
  • poetry 1.2

Python + Poetry の Dockerfile

今回題材として簡単な API サーバを Docker + Poetry + fastAPI で立ててみたいと思います。

ディレクトリ構造

今回のディレクトリ構造は以下になっています。

.
├── Dockerfile
├── app.py
├── poetry.lock
└── pyproject.toml

pyproject.toml の作成

poetry で新規プロジェクトを作成します。

poetry init

必要なライブラリを追加します。今回は以下のとおりです。

poetry add pydantic fastapi "uvicorn[standerd]"

ライブラリの準備は完了です。

app.py の作成

よくあるhello worldを返すような REST API を実装します。

from pydantic import BaseModel
from fastapi import FastAPI

app = FastAPI()


class HelloWorld(BaseModel):
    message: str


@app.get("/hello-world", response_model=HelloWorld)
async def hello_world():
    return HelloWorld(message="Hello world")

Dockerfile の作成

Python + Poetry + FastAPI の Dockerfile を作成すると以下のようになります。

他で使いまわす場合は、package install 部分以下を変更すれば、使いませます。

FROM python:3.9-slim AS builder
LABEL version="0.1"
LABEL description="api server"

ENV POETRY_HOME="/opt/poetry" \
    POETRY_VIRTUALENVS_CREATE=false \
    \
    PIP_NO_CACHE_DIR=off \
    PIP_DISABLE_PIP_VERSION_CHECK=on \
    PIP_DEFAULT_TIMEOUT=100 \
    \
    PYSETUP_PATH="/opt/pysetup"

ENV PATH="$POETRY_HOME/bin:$PATH"

RUN apt-get update && \
    apt-get install --no-install-recommends -y curl && \
    apt-get clean

RUN curl -sSL https://install.python-poetry.org/ | python -

# packages install
RUN mkdir /app
WORKDIR /app
COPY ./pyproject.toml /app/pyproject.toml
RUN poetry install --only main

# Python script
COPY ./app.py /app/app.py

EXPOSE 80
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "80"]

Docker image の作成

docker のイメージファイルを作成します。

docker build -t "[イメージ名]" -f Dockerfile .

コンテナの起動

上で作成したイメージをコンテナで動かします。

docker container run -it -d -p 127.0.0.1:8080:80 --name [コンテナ名] [作成したイメージ名]

起動はdocker psで確認できます。

API を叩いてみましょう。

ブラウザを開き、http://127.0.0.1:8080/hello-worldにアクセスすると、

{"message":"Hello world"}

が表示されれば、API サーバが正しく起動しています。

感想

今回 Docker + Poetry + FastAPI で API サーバを localhost にて立ててみました。

これで Poetry を使った Docker image を簡単に作成できますので、ぜひご活用ください。

ではでは、また次回。