その1 でやりたいこと
- docker-composeをビルドしてDjango(のプロジェクト作成用)とMySQLコンテナを作成
- プロジェクトフォルダ直下がコンテナ内にマウントされていることを確認(※プロジェクトフォルダは、この後出てくるディレクトリ構成図参照)
環境情報
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
はじめのディレクトリ構成図
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
django==2.1.5
mysqlclient
flake8
#.env(MySQLの環境設定ファイル)
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
無事プロジェクトフォルダ直下がマウントされてます。