DockerでDjangoを動かしてみる

DockerでDjangoを動かしてみる

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/focal64"
  config.vm.network "forwarded_port", guest: 80, host: 80
  config.vm.provider "virtualbox" do |vb|
    vb.name = "hogehoge"
  end
  config.vm.provision :docker
  config.vm.provision :docker_compose, yml: "/vagrant/docker-compose.yml", run: "always"
end

docker-compose.yml

version: '3'
services:
  hoge:
    build: .
    image: hoge-img
    container_name: hoge
    ports:
      - 80:80
    volumes:
      - /vagrant/hoge:/hoge

Dockerfile

FROM ubuntu

RUN apt update
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Tokyo
RUN apt install -y tzdata
RUN apt install -y python3 python3-pip python3-django

VOLUME /hoge
WORKDIR /hoge
EXPOSE 80

CMD ["python3", "manage.py", "runserver", "0.0.0.0:80"]

vagrantで起動。

> vagrant up

接続する。

> vagrant ssh

Djangoのプロジェクトがまだないため、dockerはエラーで起動していない。

$ cd /vagrant

$ docker-compose ps
Name              Command               State    Ports
------------------------------------------------------
hoge   python3 manage.py runserve ...   Exit 2

$ docker-compose logs
Attaching to hoge
hoge    | python3: can't open file 'manage.py': [Errno 2] No such file or directory

Djangoのプロジェクトを作成し、

$ docker-compose run hoge django-admin startproject sample_app .

$ ls hoge/
manage.py  sample_app

改めて起動。

$ docker-compose up -d

ブラウザからDjangoの画面が確認できる。

http://localhost/ f:id:yk5656:20210502160336j:plain