Docker-composeでpythonの開発環境を構築する話

python

はじめに

docker-composeでpythonの開発環境を構築する方法を紹介していきます。
色々応用が効く様にpythonのイメージから構築していますので、状況によって変えていただければと思います。
一応、dockerが入っていればlinux、windowsで同じ環境を作れると思います。
macは試していませんが、windowsも一緒でいけたのでよりlinuxに近いmacも同じでいける気がします。

vscodeはcode-serverとして仮想環境に入れるか、端末でvscodeを立ち上げてリモートで入るかですが、好みや環境によると思います。
サーバー側に入れた方がどこからでもアクセスできて便利ですが、その分サーバーに負荷がかかります。
リモートで入るとサーバー側の負荷は減りますが、開発環境が端末に依存します。

個人としての運用ですが、開発用は自宅サーバーで行っているので、仮想環境に入れています。
実稼働ではvpsを借りてDockerからcode-serverを抜いて構築すればいいと思います。

Dockerfileとdoker-compose.ylm

projectとvscodeの設定ファイルはマウントでローカルに保存するようにしてあるので、再ビルドで消えないようにはなっています。

http://localhost:8080/ でログインできます
パスワードは coderとなっています。好みで変更してください

dockerfile

FROM python:3.8.9-slim as code-server
USER root

RUN apt-get update
RUN apt-get -y install locales && \
    localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm

# テキストエディタは好みのに変えてください
RUN apt-get install -y nano less

# gitを使う場合はコメントアウトを外してください
# name と emailは自分のを入れてください
# RUN apt-get install -y git
# RUN git config --global user.name ******
# RUN git config --global user.email ******@******

RUN pip install --upgrade pip
RUN pip install --upgrade setuptools

# ここからpipを追加する
#RUN pip install numpy

# pipの追加はここまで

# code-serverここから
RUN apt-get update && apt-get install -y curl
RUN curl -fsSL https://code-server.dev/install.sh | sh
RUN mkdir -p /root/.config/code-server/
RUN echo 'bind-addr: 0.0.0.0:8080\n\
auth: password\n\
password: coder\n\
cert: false' > /root/.config/code-server/config.yaml

# code-serverここまで

docker-compose.yml

version: "3.4"
services:
  code:
    build:
      context: .
      target: code-server

    command: code-server

    ports:
      - 127.0.0.1:8080:8080
    volumes:
      - ./projects:/home/coder/project
      - ./code-server:/home/coder/.local/share/code-server
      - ./code_config:/root/.local/share/code-server

パスワードを無しにする場合はdockerfileを下記の通りに変更してください

auth: password\n\
password: coder\n\
↓
auth: none\n\
#password: coder\n\

外部に公開する場合は下記の通りに変更してください。

ports:
  - 127.0.0.1:8080:8080
↓
ports:
  - 0.0.0.0:8080:8080

使い方

dockerfileとdocker-compose.ymlを一つのフォルダに入れて、そのフォルダで下記のコマンドを実行します。
初回は勝手にbuildします。
-dはバックグラウンドでの実行オプションです。

docker-compose up -d

変更して再構築する場合は下記のコマンドを実行します。

docker-compose down
docker-compose build
docker-compose up -d

windowsであれば、拡張子をps1にしてコマンドを保存しておくとpowershellで実行することが出来ます。
up.ps1 build.ps1 down.ps1でそれぞれ作っておくと簡単に操作できるのでおすすめです。

最後に

簡単に構築するというよりは好みの環境に変えられる雛形のつもりで考えました。
dockerの利点としてはどの環境でも同じ開発環境を構築できる点だと思います。
dockerを入れてしまえば後はOS依存が無くなることと、運用のためにVPSで立ち上げる場合もトラブルを極力減らせると思います。

使うだけならもっと簡単な方法がありますが、いろいろやろうとしたときに構築した一番の大本がこの方法なので応用が効きます。

外からつなぐ場合はVPNかSSHポートフォワーディング(トンネリング)を使っていただければと思います。
自分はraspberry pi – ubuntu – softether でvpnを立てて接続しています。
vpnの方が応用が効くのでおすすめです。

後は好みで書き換えて使っていただければと思います。

タイトルとURLをコピーしました