開発

複数db共存、初期にsqlを実行するdocker-compose Docker

 

ローカル開発ではphpMyAdmin使います。

phpMyAdmin

  • http://{ipアドレス}:18080
  • http://{ipアドレス}:28080

 

リモートへのDB接続はMySQL WorkBenchでつなぎます。

 

 

docker-compose.yaml

 

version: "3"
services:
  app:
    build:
      context: ./docker/php
      args:
        - TZ=${TZ}
    ports:
      - ${APP_PORT}:8000
    volumes:
      - ${PROJECT_PATH}:/work:cached
      - ./docker/ash:/etc/profile.d
      - ./logs:/var/log/php
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini
    working_dir: /work
    environment:
      - DB_CONNECTION=mysql
      - DB_HOST=db
      - DB_DATABASE=${DB_NAME}
      - DB_USERNAME=${DB_USER}
      - DB_PASSWORD=${DB_PASS}
      - TZ=${TZ}
      - CACHE_DRIVER=redis
      - SESSION_DRIVER=redis
      - QUEUE_DRIVER=redis
      - REDIS_HOST=redis

  web:
    image: nginx:1.17.3
    depends_on:
      - app
    ports:
      - ${WEB_PORT}:80
    volumes:
      - ${PROJECT_PATH}:/work:cached
      - ./logs:/var/log/nginx
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    environment:
      - TZ=${TZ}
      - ROOT_DIR=${ROOT_DIR}
      - PUBLIC_DOMAIN=${PUBLIC_DOMAIN}

  db:
    build:
      context: ./docker/mysql
    volumes:
      - db-store:/var/lib/mysql
      - ./logs:/var/log/mysql
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_PASS}
      - MYSQL_ROOT_PASSWORD=${DB_PASS}
      - TZ=${TZ}
    ports:
      - ${DB_PORT}:3306

  log_db:
    container_name: log_db
    build:
      context: ./docker/mysql
    volumes:
      - ./logs:/var/log/mysql
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./docker/mysql/sql:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_DATABASE=${LOG_DB_NAME}
      - MYSQL_USER=${LOG_DB_USER}
      - MYSQL_PASSWORD=${LOG_DB_PASS}
      - MYSQL_ROOT_PASSWORD=${LOG_DB_PASS}
      - TZ=${TZ}
    ports:
      - ${LOG_DB_PORT}:3306
    cap_add:
      - SYS_ADMIN

  redis:
    image: redis:5.0-alpine
    volumes:
      - redis-store:/data

  phpmyadmin:
    container_name: phpmyadmin
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOSTS=db
      - PMA_USER=root
      - PMA_PASSWORD=secret
    ports:
      - 18080:80
    links:
      - db

  phpmyadmin_log:
    container_name: phpmyadmin_log
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOSTS=log_db
      - PMA_USER=root
      - PMA_PASSWORD=secret
    ports:
      - 28080:80
    links:
      - log_db

volumes:
  db-store:
  redis-store:

 

 

.env

COMPOSE_PROJECT_NAME=app
PROJECT_PATH=./src
ROOT_DIR=/work
PUBLIC_DOMAIN=auth.app-local
TZ=Asia/Tokyo
WEB_PORT=10080
APP_PORT=18000
DB_PORT=13306
DB_NAME=homestead
DB_USER=homestead
DB_PASS=secret
# Log DB
LOG_DB_PORT=23306
LOG_DB_NAME=log_db
LOG_DB_USER=homestead
LOG_DB_PASS=secret

 

初期にsqlを発行したい

 

初期に実行したいsqlのファイルを「./docker/mysql/sql/sample.sql」においておくと、

$ docker-compose down
$ docker-compose up -d

 

コマンド実行時に実行されます。

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)