Docker ComposeでLaravelを動かしてみる
用意するファイル
適当なディレクトリに下記のファイルを用意。
- Vagrantfile
- Dockerfile
- docker-compose.yml
Vagrantfile
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.network "forwarded_port", guest: 80, host: 80 config.vm.network "forwarded_port", guest: 5432, host: 5432 config.vm.synced_folder ".", "/vagrant", type:"virtualbox" config.vm.provision :docker config.vm.provision :docker_compose end
Dockerfile
FROM python RUN apt -y update RUN apt install -y postgresql libpq-dev RUN pip install psycopg2 RUN apt install -y python3-django RUN pip install django
docker-compose.yml
version: '3' services: app: build: . image: app-img container_name: app ports: - 80:80 volumes: - /vagrant/hoge:/hoge working_dir: /hoge command: python manage.py runserver 0.0.0.0:80 restart: always depends_on: - db db: image: postgres container_name: db ports: - 5432:5432 volumes: - db-vol:/var/lib/postgresql/data environment: POSTGRES_USER: hogehoge POSTGRES_PASSWORD: hogehoge POSTGRES_DB: hoge_db restart: always volumes: db-vol:
インストール
VagrantでCentOS7を起動。
> vagrant up > vagrant ssh
共有フォルダに移動して、 とりあえずビルドしてみる。
$ cd /vagrant $ docker-compose build
Pythonやpipが入ってることを確認。
$ docker-compose run --rm app python --version ・・・ Python 3.9.4 $ docker-compose run --rm app pip --version ・・・ pip 21.1 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
プロジェクトを作成。
$ docker-compose run --rm app django-admin startproject sample_app .
DBの接続先をPostgreSQLにして、
$ vi hoge/sample_app/settings.py
・・・ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'hoge_db', 'USER': 'hogehoge', 'PASSWORD': 'hogehoge', 'HOST': 'db', 'PORT': '', } } ・・・
マイグレーションを実行。
$ docker-compose run --rm app python manage.py migrate
起動すると、
$ docker-compose up -d
ブラウザでDjangoの画面が確認できる。