2018年5月21日月曜日

DockerでMezzanine、PostgreSQLがインストールされたコンテナ(Alpine3.7)を構築する

MezzanineはPython製のCMSです。

○Mezzanineの画面


○構築方法
以下の手順で、Mezzanineのコンテナを構築・実行します。

1. Mezzanineイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t mezzanine-pg .

Dockerfile
FROM python:3.6-alpine3.7

RUN mkdir -p /opt/mezzanine
WORKDIR /opt/mezzanine
RUN apk update \
  && apk add --no-cache --virtual=build-deps jpeg jpeg-dev zlib-dev musl-dev gcc build-base python3-dev postgresql-dev\
  && pip install mezzanine psycopg2 \
  && apk del build-base build-deps gcc \
  && apk add --no-cache postgresql-client \
  && rm -rf /var/cache/apk/* \
  && mezzanine-project mysite \
  && echo $'#!/bin/sh \n\
export PGPASSWORD=mezzanine \n\
until psql -h db -U postgres -d mezzanine -c "\l" \n\
do \n\
  echo -n "." \n\
  sleep 1 \n\
done \n\
cd /opt/mezzanine/mysite \n\
sed -i -e \'s/"ENGINE": "django.db.backends.sqlite3",/"ENGINE": "django.db.backends.postgresql_psycopg2",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"NAME": "dev.db",/"NAME": "mezzanine",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"USER": "",/"USER": "postgres",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"PASSWORD": "",/"PASSWORD": "mezzanine",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"HOST": "",/"HOST": "db",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"PORT": "",/"PORT": "5432",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/# ALLOWED_HOSTS = \[""\]/ALLOWED_HOSTS  = ["*"]/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
python manage.py createdb --noinput \n\
python manage.py migrate --noinput \n\
python manage.py runserver 0.0.0.0:80' > /opt/mezzanine/mysite/start.sh \
  && chmod +x /opt/mezzanine/mysite/start.sh
EXPOSE 80
VOLUME /opt/mezzanine/mysite
CMD ["/opt/mezzanine/mysite/start.sh"]
2. MezzanineとPostgreSQLコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d
docker-compose.yml
version: "2"
services:
  db:
    image: postgres:9.6-alpine
    container_name: "mezzanine-db"
    ports:
      - "5432:5432"
    volumes:
      - "db-data:/var/lib/postgresql/data"
    environment:
        POSTGRES_DB: mezzanine
        POSTGRES_PASSWORD: mezzanine
  mezzanine:
    image: mezzanine-pg
    container_name: "mezzanine"
    volumes:
      - "mezzanine-data:/opt/mezzanine/mysite"
    ports:
      - "80:80"
    depends_on:
      - db
volumes:
  db-data:
    driver: local
  mezzanine-data:
    driver: local

3.ブラウザから以下のURLにアクセス
http://<Dockerホスト名またはIP>/
※デフォルトユーザとパスワードはadmin/defaultです。


○関連情報
・psycopg2に関する他の記事はこちらを参照してください。

0 件のコメント:

コメントを投稿