VPS + docker でdjangoの立ち上げまでで詰まったからメモ


対象者

VPS + Docker + Djangoの環境構築で詰まった人

環境

Ubuntu 18.04(ConohaVPS)

前提

docker & docker-compose が使用可能

したいこと

docker で ポンっできましたくらいの勢いで、
Djangoのロケットが飛んでる画像がブラウザで見れるとこ作りたい.

詰まったところ

Django のALLOWED_HOST の設定がミスってた。

解決策
=> 立ち上げと同時に書き変えるようにbashfileに設定

構成

以下のような構成になってます。

Django/
 ├ Dockerfile
 ├ docker-compose.yml
 ├ startup.sh
 └ requirements.txt

各fileの中身

Dockerfile
FROM python:3.6
ENV PYTHONUNBUFFERED 1

RUN apt-get update
RUN mkdir /test
ADD requirements.txt /test/
WORKDIR /test
RUN pip install -r requirements.txt
RUN apt-get install -y vim
RUN django-admin startproject mysite
RUN cd mysite

COPY startup.sh /startup.sh
RUN chmod 744 /startup.sh
CMD ["/startup.sh"]
docker-compose.yml

version: '2'
services:
  web:
    build: .
    container_name: 'django'
    ports:
      - "8080:8000"

startup.sh
#!/usr/bin/env bash
pwd
cd mysite/mysite
pwd

ls

sed -i -e "s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = \[\'ここに使用するIPアドレス or ドメイン or *\'\]/p" ./settings.py

ls
cat settings.py
cd ..
pwd
python3 manage.py runserver 0.0.0.0:8000
requirements.txt
Django>=2.1
PyMySQL

終わりに

startup .sh 内にsed でsetting.pyの中身を変更したことで解決しました。
startup.sh のpwdはコンテナのlog を確かめるために書いてたやつです。

ちょっと立ち上げたかっただけなので、他に開発環境などは作っていません。今後,がっつり開発に使うならDBなどの設定も考えて行きたいと思います。