Agile育成ブログ
未来を変える喜びを
Docker

Dockerのインストール


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に変更

You cannot copy content of this page