Warning: count(): Parameter must be an array or an object that implements Countable in /home/xs638785/agile-software.site/public_html/wp-content/plugins/rich-table-of-content/functions.php on line 490
Windows環境
$ docker version
$ docker-compose version
それぞれ以下のように表示されればDockerは正常に起動されています。
Linux環境
古いバージョンのアンインストール
sudo apt-get remove docker docker-engine docker.io containerd runc
パッケージアップデート
sudo apt-get update
HTTPS経由でリポジトリを使用できるようにパッケージをインストール
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
Docker公式のGPGキーの追加
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
リポジトリを設定
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Dockerのインストール
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ apt-cache madison docker-ce
$ sudo apt-get install docker-ce=5:18.09.5~3-0~ubuntu-bionic docker-ce-cli=5:18.09.5~3-0~ubuntu-bionic containerd.io
Dockerが正常にインストールしたか確認
$ sudo docker run hello-world
Dockerを自動起動させる
sudo systemctl enable docker
Docker Composeインストール
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
実行権限適用
sudo chmod +x /usr/local/bin/docker-compose
インストール確認
docker-compose --version
DjangoをDocker上で動作
フォルダおよびファイルの作成
$ mkdir sql
$ touch Dockerfile docker-compose.yml command.sh requirements.txt sql/init.sql
FROM python:3.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip3 install -r requirements.txt
ADD . /code/
EXPOSE 8000
COPY ./command.sh /command.sh
CMD ["/command.sh"]
version: '3'
services:
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
working_dir: /code
ports:
- '8000:8000'
volumes:
- .:/code
depends_on:
- db
db:
image: mysql:5.6
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: django_docker
MYSQL_USER: user
MYSQL_PASSWORD: password
volumes:
- web-db-data:/var/lib/mysql
- ./sql:/docker-entrypoint-initdb.d
ports:
- '3306:3306'
volumes:
web-db-data:
set -e
cd /code
wait_count=0
while ! python3 manage.py shell -c "
from django.db import connection
with connection.cursor() as cursor:
cursor.execute('select 1')
cursor.fetchall()
" 2> /dev/null
do
echo Wait until DB is ready... $((wait_count += 1))
sleep 5
done
python3 manage.py migrate --noinput
python3 manage.py collectstatic --noinput
Django==2.2.10
mysqlclient==1.4.6
GRANT ALL PRIVILEGES ON test_django_docker TO 'user'@'%';
FLUSH PRIVILEGES;
データベース起動
$ docker-compose up db
プロジェクト作成
$ docker-compose build web
$ docker-compose run web django-admin startproject mysite .
MySQLに変更