Dockerを使ってWebシステム開発環境を構築
Dockerを使う理由
自身での環境構築に苦戦
別記事で環境構築について投稿しています。
その時に非常に苦戦しました。(というか敗北しました…)
「今回はDockerを使って環境構築をするのも手。」
ということで、自身での環境構築はまた理解が深まった際に、もう1度リベンジしようと思います。
なぜDockerなのか?
まずDockerについて理解を深めます。
以下の記事を参照しました。
https://koni.hateblo.jp/entry/2017/01/28/150522
https://knowledge.sakura.ad.jp/13265/
https://www.kagoya.jp/howto/rentalserver/container-03/
Docker-composeとは
Docker compose とは、複数のコンテナから成るサービスを構築・実行する手順を自動的にし、管理を容易にする機能です。
Docker compose では、compose ファイルを用意してコマンドを1 回実行することで、そのファイルから設定を読み込んですべてのコンテナサービスを起動することができます。
参照
https://qiita.com/TsutomuNakamura/items/7e90e5efb36601c5bc8a
# yum install git
# ~~~の部分は自身が構築する環境に合わせて、githubからコピー
# git clone https://github.com/~~~~~~
Cloning into 'docker-django'...
remote: Enumerating objects: 315, done.
remote: Counting objects: 100% (315/315), done.
remote: Compressing objects: 100% (96/96), done.
remote: Total 315 (delta 214), reused 308 (delta 211), pack-reused 0
Receiving objects: 100% (315/315), 5.81 MiB | 1.48 MiB/s, done.
Resolving deltas: 100% (214/214), done.
ダウンロード完了後の階層は以下のようになっています。
# ll
total 0
drwxr-xr-x. 8 root root 99 Dec 17 07:36 docker-django
Dockerのインストール
インストールに関しては以下の記事を参考にしました。
https://zenn.dev/ymasaoka/articles/install-docker-centos-7
Dockerのバージョンを確認します。
# docker --version
-bash: docker: command not found
当然インストールされていないので、インストールしていきます。
公式サイトではCentOSのメンテナンスバージョンのみサポートと記載されています。
https://docs.docker.com/engine/install/centos/
そこでまずCentOSを最新の状態にします。
5分ほど時間がかかります。
# yum update
公式レポジトリのインストール
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Docker CEのインストール
yum install -y docker-ce docker-ce-cli containerd.io
バージョン確認
# docker --version
Docker version 20.10.1, build 831ebea
Dockerの起動
# systemctl start docker
自動起動設定
# systemctl enable docker
Docker-composeのインストール
以下の公式サイトを参考にしました。
https://docs.docker.com/compose/install/
# sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 651 100 651 0 0 4672 0 --:--:-- --:--:-- --:--:-- 4683
100 11.6M 100 11.6M 0 0 1663k 0 0:00:07 0:00:07 --:--:-- 1983k
Docker-composeインストールの確認
# docker-compose --version
docker-compose version 1.27.4, build 40524192
Docker-composeの権限
まずDocker-compose upを行ったところ、権限に関するエラーが発生しました
# docker-compose up
-bash: /usr/local/bin/docker-compose: Permission denied
権限を付与します。
+xで実行権限を付与します。
権限の付与については以下の記事を参考にしました。
https://qiita.com/ntkgcj/items/6450e25c5564ccaa1b95
sudo chmod +x /usr/local/bin/docker-compose
Docker-composeの実行
# docker-compose up
【メモ】
最後に-dをつけるとバックグラウンドで起動します。
docker-composeでコンテナを起動します。
実行結果の最後の方のみ記載。
(エラーは出ていないはず??次回作業時確認!)
Digest: sha256:b1d09e9718890e6ebbbd2bc319ef1611559e30ce1b6f56b2e3b479d9da51dc35
Status: Downloaded newer image for nginx:1.13
Creating docker-django_db_1 ... done
Creating docker-django_python_1 ... done
Creating docker-django_nginx_1 ... done
Attaching to docker-django_db_1, docker-django_python_1, docker-django_nginx_1
db_1 | 2020-12-17 08:26:22+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.32-1debian10 started.
db_1 | 2020-12-17 08:26:23+09:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
db_1 | 2020-12-17 08:26:23+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.32-1debian10 started.
db_1 | 2020-12-16T23:26:23.591372Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
db_1 | 2020-12-16T23:26:23.598365Z 0 [Note] mysqld (mysqld 5.7.32) starting as process 1 ...
db_1 | 2020-12-16T23:26:23.601759Z 0 [Note] InnoDB: PUNCH HOLE support available
db_1 | 2020-12-16T23:26:23.601790Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
db_1 | 2020-12-16T23:26:23.601798Z 0 [Note] InnoDB: Uses event mutexes
db_1 | 2020-12-16T23:26:23.601806Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
db_1 | 2020-12-16T23:26:23.601814Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
db_1 | 2020-12-16T23:26:23.601824Z 0 [Note] InnoDB: Using Linux native AIO
db_1 | 2020-12-16T23:26:23.602178Z 0 [Note] InnoDB: Number of pools: 1
db_1 | 2020-12-16T23:26:23.602323Z 0 [Note] InnoDB: Using CPU crc32 instructions
db_1 | 2020-12-16T23:26:23.613511Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
db_1 | 2020-12-16T23:26:23.626984Z 0 [Note] InnoDB: Completed initialization of buffer pool
db_1 | 2020-12-16T23:26:23.629335Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
db_1 | 2020-12-16T23:26:23.651521Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
db_1 | 2020-12-16T23:26:23.750055Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
db_1 | 2020-12-16T23:26:23.760013Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
db_1 | 2020-12-16T23:26:23.819358Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
db_1 | 2020-12-16T23:26:23.820262Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
db_1 | 2020-12-16T23:26:23.820287Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
db_1 | 2020-12-16T23:26:23.820537Z 0 [Note] InnoDB: Waiting for purge to start
db_1 | 2020-12-16T23:26:23.871301Z 0 [Note] InnoDB: 5.7.32 started; log sequence number 13003109
db_1 | 2020-12-16T23:26:23.873814Z 0 [Note] Plugin 'FEDERATED' is disabled.
db_1 | 2020-12-16T23:26:23.874376Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
db_1 | 2020-12-16T23:26:23.950993Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
db_1 | 2020-12-16T23:26:23.951023Z 0 [Note] Skipping generation of SSL certificates as certificate files are present in data directory.
db_1 | 2020-12-16T23:26:23.963368Z 0 [Warning] CA certificate ca.pem is self signed.
db_1 | 2020-12-16T23:26:23.963432Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
db_1 | 2020-12-16T23:26:23.974071Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
db_1 | 2020-12-16T23:26:23.974182Z 0 [Note] IPv6 is available.
db_1 | 2020-12-16T23:26:23.974204Z 0 [Note] - '::' resolves to '::';
db_1 | 2020-12-16T23:26:23.974242Z 0 [Note] Server socket created on IP: '::'.
db_1 | 2020-12-16T23:26:24.040014Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
db_1 | 2020-12-16T23:26:24.067064Z 0 [Note] InnoDB: Buffer pool(s) load completed at 201217 8:26:24
db_1 | 2020-12-16T23:26:24.350990Z 0 [Note] Event Scheduler: Loaded 0 events
db_1 | 2020-12-16T23:26:24.351267Z 0 [Note] mysqld: ready for connections.
db_1 | Version: '5.7.32' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
docker-compose.ymlの中身
version: '3'
services:
nginx:
image: nginx:1.13
ports:
- "80:80"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
depends_on:
- python
db:
image: mysql:5.7
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: mysql
MYSQL_DATABASE: mysql
MYSQL_USER: mysql
MYSQL_PASSWORD: mysql
TZ: 'Asia/Tokyo'
volumes:
- ./mysql:/var/lib/mysql
- ./sql:/docker-entrypoint-initdb.d
python:
build: ./python
command: uwsgi --socket :8001 --module app.wsgi --py-autoreload 1 --logt
o /tmp/mylog.log
volumes:
- ./src:/code
- ./static:/static
expose:
- "8001"
depends_on:
- db
ブラウザからのアクセス
docker-composeで起動した後、webからアクセスしてみます。
http://[IPアドレス]
http://[IPアドレス]:80
アクセス画面(上手くいっていない?)
アクセスするとTera Term上でこのように反応がありました。
nginx_1 | 103.5.140.159 - - [17/Dec/2020:22:45:03 +0000] "GET / HTTP/1.1" 500 32 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" "-"
nginx_1 | 103.5.140.159 - - [17/Dec/2020:22:45:04 +0000] "GET /favicon.ico HTTP/1.1" 500 32 "http://140.227.75.4/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" "-"
ALLOWD HOSTを設定していませんでした。
./src/mysite/settings.pyの
ALLOWED_HOSTS = ['[IPアドレス]',]
まだアクセスできない。
docker-ps
を使って状態を見てみます。
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f4ef866fe8e8 nginx:1.13 "nginx -g 'daemon of…" 24 hours ago Up 3 minutes 0.0.0.0:80->80/tcp docker-django_nginx_1
6c7057c4c1fd docker-django_python "uwsgi --socket :800…" 24 hours ago Up 3 minutes 8001/tcp docker-django_python_1
ba3f3cfef45d mysql:5.7 "docker-entrypoint.s…" 24 hours ago Up 3 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp docker-django_db_1
[root@qsbbvu1t docker-django]#
STATUSがupなので立ち上がってはいそうです。
Dockerのマイグレーション
マイグレーション作業を行っていませんでした。
以下のサイトを参考に作業を行います。
https://qiita.com/kenkono/items/6221ad12670d1ae8b1dd#django%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E5%AE%9F%E8%A1%8C
以下のエラー発生。
MySQL関連ですね。
pymysqlがdjangoの新バージョンにまだ対応していないとのこと。
# docker-compose run python ./manage.py makemigrations
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.8.0.
同じエラー発生。
調べたところpymysqlはそもそもdjango2.2に対応していないとのこと。
解決するには、
①pymysqlの代わりにmysqlclientを入れる(django推奨)
②djangoのバージョンを2.2から2.1に下げる
sqlclientのインストール
djangoのバージョンを下げることはセキュリティ上適切ではありません。
そこで、今回はpymysqlの代わりにmysqlclientを使用することにしました。
エラーの中にはmysqlclientのバージョン1.3.13以上が必要と記載されていました。
そこで、requirements.txtの内容を以下にかきかえました。
# vi requirements.txt
Django==2.2.13
uwsgi==2.0.17
mysqlclient==1.3.13
マイグレーション
マイグレーションとは以下の意味です。
プログラムやデータ、OSなどの環境やプラットフォームを移行、変換すること。
manage.pyが存在するディレクトリまで移動して以下を実行。
[root@qsbbvu1t src]# docker-compose run python ./manage.py makemigrations
以下、エラー発生。
Creating docker-django_python_run ... done
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 361, in execute
self.check()
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 390, in check
include_deployment_checks=include_deployment_checks,
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 377, in _run_checks
return checks.run_checks(**kwargs)
File "/usr/local/lib/python3.6/site-packages/django/core/checks/registry.py", line 72, in run_checks
new_errors = check(app_configs=app_configs)
File "/usr/local/lib/python3.6/site-packages/django/core/checks/urls.py", line 10, in check_url_config
if getattr(settings, 'ROOT_URLCONF', None):
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 79, in __getattr__
self._setup(name)
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 66, in _setup
self._wrapped = Settings(settings_module)
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 157, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/code/app/settings.py", line 14, in <module>
import pymysql
ModuleNotFoundError: No module named 'pymysql'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 336, in run_from_argv
connections.close_all()
File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 219, in close_all
for alias in self:
File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 213, in __iter__
return iter(self.databases)
File "/usr/local/lib/python3.6/site-packages/django/utils/functional.py", line 80, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 147, in databases
self._databases = settings.DATABASES
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 79, in __getattr__
self._setup(name)
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 66, in _setup
self._wrapped = Settings(settings_module)
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 157, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/code/app/settings.py", line 14, in <module>
import pymysql
ModuleNotFoundError: No module named 'pymysql'
pymysqlの記述があるところがエラーの原因みたいです。
mysqlclientに書き換えていきます。
# vi settings.py
pymysqlをコメントアウトし、mysqlclientのimportを追記しました。
import os
import mysqlclient
# import pymysql
# connect mysql
# pymysql.install_as_MySQLdb()
mysqlclient.install_as_MySQLdb()
もう1回マイグレーションしてみます。
エラー発生。
# docker-compose run python ./manage.py makemigrations
Creating docker-django_python_run ... done
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 361, in execute
self.check()
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 390, in check
include_deployment_checks=include_deployment_checks,
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 377, in _run_checks
return checks.run_checks(**kwargs)
File "/usr/local/lib/python3.6/site-packages/django/core/checks/registry.py", line 72, in run_checks
new_errors = check(app_configs=app_configs)
File "/usr/local/lib/python3.6/site-packages/django/core/checks/urls.py", line 10, in check_url_config
if getattr(settings, 'ROOT_URLCONF', None):
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 79, in __getattr__
self._setup(name)
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 66, in _setup
self._wrapped = Settings(settings_module)
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 157, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/code/app/settings.py", line 14, in <module>
import mysqlclient
ModuleNotFoundError: No module named 'mysqlclient'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 336, in run_from_argv
connections.close_all()
File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 219, in close_all
for alias in self:
File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 213, in __iter__
return iter(self.databases)
File "/usr/local/lib/python3.6/site-packages/django/utils/functional.py", line 80, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 147, in databases
self._databases = settings.DATABASES
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 79, in __getattr__
self._setup(name)
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 66, in _setup
self._wrapped = Settings(settings_module)
File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 157, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/code/app/settings.py", line 14, in <module>
import mysqlclient
ModuleNotFoundError: No module named 'mysqlclient'
んー。上手くいかない。
調べていたところ、settings.pyにimport mysqlclientを記載しなくてよいような情報を発見。
https://zerofromlight.com/blogs/detail/29/
試してみます。
# vi settings.py
import os
# import mysqlclient
# import pymysql
# connect mysql
# pymysql.install_as_MySQLdb()
# mysqlclient.install_as_MySQLdb()
# docker-compose run python ./manage.py makemigrations
Creating docker-django_python_run ... done
No changes detected
上手くいったのか?
マイグレーションを実行。
# docker-compose run python ./manage.py migrate
Creating docker-django_python_run ... done
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
お、行けたっぽい気がする。
dockerコンテナの立ち上げ
# docker-compose build
db uses an image, skipping
nginx uses an image, skipping
Building python
Step 1/7 : FROM python:3.6
---> 4a03e5e8adde
Step 2/7 : ENV PYTHONUNBUFFERED 1
---> Using cache
---> 8c1a88d570f3
Step 3/7 : RUN mkdir /code
---> Using cache
---> 7f012356f716
Step 4/7 : WORKDIR /code
---> Using cache
---> 647e9247446c
Step 5/7 : ADD requirements.txt /code/
---> Using cache
---> 31fc46edeab4
Step 6/7 : RUN pip install -r requirements.txt
---> Using cache
---> ec091df899d8
Step 7/7 : ADD . /code/
---> Using cache
---> ff87162e0f0d
Successfully built ff87162e0f0d
Successfully tagged docker-django_python:latest
# docker-compose up
特にエラーは出ず、以下のところでストップ。
(コマンドは入力できない状態)
db_1 | Version: '5.7.32' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
コマンド入力できないので、バックグラウンドで立ち上げます。
# docker-compose up -d
Starting docker-django_db_1 ... done
Starting docker-django_python_1 ... done
Starting docker-django_nginx_1 ... done
起動できているかの確認。
STATUSがUpなので大丈夫っぽいです。
# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------
docker-django_db_1 docker-entrypoint.sh Up 0.0.0.0:3306->3306/tcp
mysql ... , 33060/tcp
docker-django_nginx_1 nginx -g daemon off; Up 0.0.0.0:80->80/tcp
docker-django_python_1 uwsgi --socket :8001 Up 8001/tcp
--mod ...
http://[IPアドレス]:[ポート番号(自分は80)]
でwebから接続。
やっとアクセスできました!!
CSSの適用
管理者画面(http://[IPアドレス]/admin)に行くと、CSSが適用されていないことが確認されました。
CSSを適用させます。
# vi settings.py
STATIC_ROOTを追記しました。
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = '/static'
以下のコマンドを実行。
# docker-compose run python ./manage.py collectstatic
Creating docker-django_python_run ... done
119 static files copied to '/static'.
ブラウザのページを更新します。
CSSが適用されて見やすくなりました。