6
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Django + MySQLの開発環境をDockerでつくる(その1)

Last updated at Posted at 2019-06-15

その1 でやりたいこと

  1. docker-composeをビルドしてDjango(のプロジェクト作成用)とMySQLコンテナを作成
  2. プロジェクトフォルダ直下がコンテナ内にマウントされていることを確認(※プロジェクトフォルダは、この後出てくるディレクトリ構成図参照)

環境情報

macOSで行ってます(Mojave 10.14.5)。
以下はdockerのバージョン情報です。

$ docker version
Client: Docker Engine - Community
 Version:           18.09.2
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        6247962
 Built:             Sun Feb 10 04:12:39 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 04:13:06 2019
  OS/Arch:          linux/amd64
  Experimental:     false

はじめのディレクトリ構成図

image.png

docker-compose.yml

docker-compose.yml
version: '3'
services:
  mysql:
    image: mariadb:latest
    container_name: maria_qiita
    env_file: ./mysql/.env
    ports:
      - "3306:3306"
    networks:
      app_net:
        ipv4_address: 172.20.0.3
    depends_on:
      - django

  django:
    build: ./django
    container_name: django_qiita
    ports:
      - "8000:8000"
    volumes:
      - ./:/src
    networks:
      app_net:
        ipv4_address: 172.20.0.2
    tty: true

networks:
  app_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.20.0.0/24
volumes:
  est-data:

Dockerfile

FROM ubuntu:18.04

RUN apt-get -y update \
  && apt-get install -y locales python3-pip python3.7 libmysqlclient-dev\
  && mkdir /src \
  && rm -rf /var/lib/apt/lists/* \
  && echo "ja_JP UTF-8" > /etc/locale.gen \
  && locale-gen

WORKDIR /src
ADD ./ /src/
RUN LC_ALL=ja_JP.UTF-8 pip3 install -r requirements.txt

「WORKDIR」を設定しておくと、後に出てくるdocker exec -it ...でコンテナ内に入った時に少し嬉しい事が起きます。

requirements.txt

requirements.txt
django==2.1.5
mysqlclient
flake8

#.env(MySQLの環境設定ファイル)

.env
MYSQL_ROOT_USER=root
MYSQL_ROOT_PASSWORD=password
MYSQL_DATABASE=db_maria
MYSQL_USER=user
MYSQL_PASSWORD=user

やりたいこと1. の確認

'1. docker-composeをビルドしてDjango(のプロジェクト作成用)とMySQLコンテナを作成

まずプロジェクトフォルダに移動

cd /Users/.../develop/project1

そしてdocker-composeのビルドコマンド実行

docker-compose up --build -d

実行した結果

project1$ docker-compose up --build -d
Creating network "project1_app_net" with driver "bridge"
Creating volume "project1_est-data" with default driver
Building django
Step 1/5 : FROM ubuntu:18.04
 ---> 7698f282e524
Step 2/5 : RUN apt-get -y update   && apt-get install -y locales python3-pip python3.7 libmysqlclient-dev  && mkdir /src   && rm -rf /var/lib/apt/lists/*   && echo "ja_JP UTF-8" > /etc/locale.gen   && locale-gen
 ---> Running in f921759116c4
Get:1 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB]
Get:3 http://security.ubuntu.com/ubuntu bionic-security/multiverse amd64 Packages [4169 B]
Get:4 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages [717 kB]
Get:5 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
...
..
.

長々とコンソールに出力されて。。。
最後doneが表示されれば完了です。

.
..
...
Installing collected packages: pytz, django, mysqlclient, pyflakes, pycodestyle, entrypoints, mccabe, flake8
Successfully installed django-2.1.5 entrypoints-0.3 flake8-3.7.7 mccabe-0.6.1 mysqlclient-1.4.2.post1 pycodestyle-2.5.0 pyflakes-2.1.1 pytz-2019.1
Removing intermediate container c4cee4bd07fe
 ---> e83634732db4
Successfully built e83634732db4
Successfully tagged project1_django:latest
Creating django_qiita ... done
Creating maria_qiita  ... done

docker psコマンドでコンテナを確認します。
「STATUS」がUp...になってれば問題ないです。

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                          PORTS                    NAMES
35ef1ef43207        mariadb:latest      "docker-entrypoint.s…"   8 seconds ago       Up 7 seconds                    0.0.0.0:3306->3306/tcp   maria_qiita
4d3ce7afcc31        project1_django     "/bin/bash"              9 seconds ago       Up 8 seconds                    0.0.0.0:8000->8000/tcp   django_qiita

やりたいこと2. の確認

'2. プロジェクトフォルダ直下がコンテナ内にマウントされていることを確認

以下コマンドでdjangoコンテナに入ります。(入るというよりは標準入力を受け付けるようにする?)
「CONTAINER ID」と「NAMES」はdocker psで調べられます。
また、「CONTAINER ID」を指定する場合は頭3桁だけでいいです。

docker exec -it <CONTAINER ID または NAMES> /bin/bash

以下実行結果
Dockerfileで「WORKDIR」に指定したディレクトリがカレントディレクトリになってます。

$ docker exec -it 4d3 /bin/bash
root@4d3ce7afcc31:/src#

ls -alで一覧をみてます。

root@4d3ce7afcc31:/src# ls -al
total 16
drwxr-xr-x 7 root root  224 Jun 15 08:30 .
drwxr-xr-x 1 root root 4096 Jun 15 09:07 ..
-rw-r--r-- 1 root root 6148 Jun 15 08:21 .DS_Store
drwxr-xr-x 4 root root  128 Jun 15 06:53 django
-rw-r--r-- 1 root root  580 Jun 15 09:06 docker-compose.yml
drwxr-xr-x 3 root root   96 Jun 15 08:16 mysql

無事プロジェクトフォルダ直下がマウントされてます。

以上

その2はこちら

6
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?