python 環境のイメージ作成用Dockerfile
- pythonのライブラリはお好きなものをインストールしてください。djangoでreset apiを実装したいため、
djangorestframework
などをインストールしてます。
FROM amazonlinux:latest
WORKDIR /opt
RUN yum update -y
RUN yum install tar gzip wget make gcc openssl-devel bzip2-devel libffi-devel -y
## Download Python 3.9.2
RUN wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz
RUN tar xzf Python-3.9.2.tgz
## Install Python 3.9.2
WORKDIR /opt/Python-3.9.2
RUN /opt/Python-3.9.2/configure --enable-optimizations
RUN make altinstall
RUN rm -f /opt/Python-3.9.2.tgz
## mysql
RUN yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
RUN yum install mysql-devel mysql-libs mysql-community-client -y
## python関連
RUN python3.9 -m pip install --upgrade pip
RUN python3.9 -m pip install django
RUN python3.9 -m pip install djangorestframework
RUN python3.9 -m pip install markdown
RUN python3.9 -m pip install django-filter
RUN python3.9 -m pip install mysqlclient
WORKDIR /srv/backend/app
docker-compose.yaml
- djangが自動起動になっていない理由がDBより先にdjangoが起動してDB接続エラーで落ちるので、
version: '3'
services:
db:
image: mysql:latest
container_name: db
command: mysqld --default-authentication-plugin=mysql_native_password
volumes:
- ./data:/var/lib/mysql
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: <ルートのパスワード>
MYSQL_DATABASE: <データベース名>
MYSQL_USER: <ユーザー名>
MYSQL_PASSWORD: <パスワード>
app:
build: ./containers/python/
container_name: app
privileged: true
volumes:
- ./backend:/srv/backend/app
environment:
TZ: Asia/Tokyo
ports:
- '8000:8000'
tty: true
depends_on:
- db
- 下記のような処理を追加してDBが起動してからdjangoを起動できるようになったら
command: python3.9 manage.py runserver 0:8000
を追加してください。
dev.to
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '<DB名>',
'USER': '<ユーザー名>',
'PASSWORD': '<パスワード>',
'HOST': '<dockerのDBのホスト名>',
'PORT': '3306',
}
}
起動確認
- appサーバーにログインして
python3.9 manage.py runserver 0:8000
を実行する