見出し画像

Docker_DjangoプロジェクトをDockerで動かす #315日目

以前の記事でも似たことをやりましたが、今回はWebアプリをちゃんと動かすための設定をやっています。Dockerの基本設定は終わっている前提です。


Webアプリはこの記事の内容をベースにしたものですが、詳細は割愛します。


ディレクトリの構成は以下です。

converter ----- yt-converter ----- app
            |                  |-- config
            |                  |-- media_root
            |                   `- manage.py
            |
            |-- docker-compose.yml
            |
             `- Dockerfile

まずDockerfileを定義します。

[Dockerfile]

FROM python:3
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 vim less
RUN apt-get -y install ffmpeg
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools

RUN python -m pip install django
RUN python -m pip install yt-dlp

次にdocker-compose.ymlを定義します。

version: '3.10'
services:
  yt-converter:
    container_name: youtube_converter
    build: .
    working_dir: '/root/yt-converter'
    tty: true
    volumes:
      - ./yt-converter:/root/yt-converter
    ports:
      - "8000:8000"
    image: yt_converter

volumesでマウントさせたいフォルダを定義しています。自分の環境のyt-converterフォルダをコンテナ内のyt-converterにマウントしています。

working_dirは「'/root/'」という書き方でも良いのですが、「'/root/yt-converter'」と書くことで、コンテナに入った際に直接yt-converterフォルダに入ることができます。コンテナに入って毎回cdしてからDjangoを立ち上げるのは手間なので、このように設定しました。


あとは順番にコマンドしていくだけです。
イメージをビルドしてコンテナを立ち上げます。

$ docker-compose up -d --build

コンテナ内に入ります。

$ docker exec -it youtube_converter bash

Djangoのmanage.pyを走らせます。この時、開発環境であれば「0:8000」とポートを指定して起動してください。コンテナ内部の8000とローカル環境が紐づいていないため、0 (= 0.0.0.0) を指定することでホスト側からアクセスできるようにします。

root@83fe3fa2a67d:~/yt-converter# python manage.py runserver 0:8000


無事に動きました。

ここまでお読みいただきありがとうございました!



参考


この記事が気に入ったらサポートをしてみませんか?