0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

dockerでamazonlinux2の環境にApache入れてeccube4.1の開発環境を構築

Last updated at Posted at 2021-10-06

こんにちは!

久しぶりの投稿になりますkamotetuです!

eccube4.1がリリースされ、早速仕事でeccubeでの開発が始まりました。

最初はeccubeをダウンロードしたときについてくるdockerfileでささっとApacheベースの環境を構築したのですが、リリース予定のサーバーがawsということで、上司からamazonlinuxにapacheをインストールする形で環境構築してと言われ、おぅぅ。。となってなんとか構築できたので、メモとして投稿します!

同じような環境で開発環境を整えたい方は参考にしてください!

前提としてeccube4.1がダウンロード済みとします!
eccube

あと、osはmacを使用しています。

###ディレクトリ構成

.
├── docker
│   ├── apache
│   │   ├── .htaccess
│   │   └── 000-default.conf
│   └── php
│       ├── Dockerfile
│       ├── entrypoint-dev.sh
│       └── php.ini
├── docker-compose.yml
├── .env
└── ec-cube
    ├──.env <-webインストーラでインストール後に勝手に作成されます。
    ...

###ファイルの中身

docker/apache/.htaccess

docker/apache/.htaccess
order allow,deny
deny from all

docker/apache/000-default.conf

docker/apache/000-default.conf
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride All
    Allow from All
    Require all granted
</Directory>

docker/php/Dockerfile

FROM amazonlinux:2

RUN yum update -y \
    && yum upgrade -y \
    && yum install -y  \
      apt-transport-https \
      apt-utils \
      build-essential \
      debconf-utils \
      gnupg2 \
      libfreetype6-dev \
      libicu-dev \
      libjpeg62-turbo-dev \
      libpng-dev \
      libpq-dev \
      libzip-dev \
      locales \
      ssl-cert \
      zlib1g-dev \
      curl \
      git \
      libxml2 \
      libxml2-devel \
      httpd \
      mysql \
      gcc \
      gcc-c++ \
      vim \
      make \
      wget \
      systemd \
      unzip \
      sudo \
      php-pear \
      php-devel \
      libzstd \
      mod_ssl

RUN yum -y install yum-utils

RUN yum install -y php-pdo php-mysql zip gd opcache intl

RUN wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

RUN rpm -ivh epel-release-latest-7.noarch.rpm

RUN yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

RUN yum-config-manager --enable remi-php74

RUN yum install -y php74 php74-php

RUN yum install -y php74-php-intl.x86_64 \
    php74-php-mysqlnd.x86_64 \
    php74-php-xml.x86_64 \
    php74-php-mbstring.x86_64 \
    php74-php-pecl-krb5-devel.x86_64

RUN yum update -y --disablerepo=amzn2-core

RUN yum install -y php74-php-pecl-zip.x86_64

RUN curl -sS https://getcomposer.org/installer \
  | php \
  && mv composer.phar /usr/bin/composer

RUN yum clean all

RUN sed -ie '354,356d' /etc/httpd/conf/httpd.conf

RUN mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.confdisable

RUN ln -f -n -s /usr/bin/php74 /usr/bin/php

COPY ./docker/php/php.ini /etc/opt/remi/php74/php.d/php.ini
COPY ./docker/apache/.htaccess /
COPY ./docker/apache/000-default.conf /etc/httpd/conf.d/000-default.conf

ARG XDEBUG_INSTALL
ARG BOOL=true

RUN if [ ${XDEBUG_INSTALL} = ${BOOL} ]; then \
      yum install -y php-pecl-xdebug3.x86_64; \
    fi

COPY ./docker/php/entrypoint-dev.sh /entrypoint-dev.sh
ENTRYPOINT ["/entrypoint-dev.sh"]

CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

docker/php/entrypoint-dev.sh

docker/php/entrypoint-dev.sh
#!/bin/sh

if [ ${XDEBUG_INSTALL} = true ]; then
if [ -n "${HOST_UID}" -a "${HOST_UID}" != "$(id -u apache)" ]; then
    usermod -u "${HOST_UID}" apache
fi

if [ -n "${HOST_GID}" -a "${HOST_GID}" != "$(id -g apache)" ]; then
    groupmod -g "${HOST_GID}" apache
fi

ini=$(cat << EOS
xdebug.client_host=${XDEBUG_CLIENT_HOST:-$(ip route | awk 'NR==1 {print $3}')}
xdebug.client_port=${XDEBUG_CLIENT_PORT}
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.start_with_request=yes
xdebug.remote_cookie_expire_time=3600
xdebug.mode=debug
EOS
)
echo "${ini}" >> /etc/opt/remi/php74/php.d/php.ini
fi

exec "$@"

docker/php/php.ini

docker/php/php.ini
opcache.max_accelerated_files = 20000
opcache.memory_consumption=256
realpath_cache_size = 4096K
realpath_cache_ttl = 600
memory_limit = 786M
(一行改行を入れといてください。)

docker-compose.yml

docker-compose.yml
version: "3"

networks:
  backend:
    driver: bridge

volumes:
  mailcatcher-data:
    driver: local
  mysql-database:
    driver: local

services:
  ### ECCube4 ##################################
  ec-cube:
    build:
      context: .
      dockerfile: ./docker/php/Dockerfile
      args:
        XDEBUG_INSTALL: "${XDEBUG_INSTALL:-false}"
    ports:
      - 8080:80
      - 4430:443
    volumes:
      //ec-cubeのデフォルトではvendorとvarもここに書いてありましたが、自分の使っているIDEの入力補完ができなかったため削除しました。
      - "./ec-cube:/var/www/html:cached"
    environment:
      - HOST_UID
      - XDEBUG_CLIENT_HOST
      - "XDEBUG_CLIENT_PORT=${XDEBUG_CLIENT_PORT:-9000}"
      - "XDEBUG_INSTALL=${XDEBUG_INSTALL:-false}"
    networks:
      - backend

  ### MySQL ##################################
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: eccubedb
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: secret
    volumes:
      - mysql-database:/var/lib/mysql
    ports:
      - 13306:3306
    networks:
      - backend

  ### Mailcatcher ##################################
  mailcatcher:
    image: schickling/mailcatcher
    ports:
      - "1080:1080"
      - "1025:1025"
    networks:
      - backend

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql
      - PMA_USER=root
      - PMA_PASSWORD=root
    links:
      - mysql
    ports:
      - "4040:80"
    networks:
      - backend

(プロジェクトディレクトリの).env

.env
XDEBUG_INSTALL=false <- xdebugインストールする場合true
HOST_UID=501 <- macの?場合
XDEBUG_CLIENT_HOST=host.docker.internal <- macの場合
XDEBUG_CLIENT_PORT=9000

そしたらターミナル起動してプロジェクトディレクトリで

$ docker-compose up --build

多分立ち上がるはず
(ec-cubeをダウンロードした際、vendorディレクトリも一緒にダウンロードされているので、ダウンロードした本人はこの時点でwebインストーラーが起動するはず。以下、.gitignoreでvendorを指定した別のメンバー向けのための手順)

そしたら、

$ docker-compose exec ec-cube bash

でコンテナの中に入って、

$ cd /var/www/html

に行って、

$ composer install --no-scripts --no-autoloader --no-plugins -d /var/www/html

(めちゃ時間かかります)
で、

$ composer dumpautoload

そしたら、ブラウザに

http://localhost:8080

でwebインストーラ?が起動するはずです!

###webインストーラが立ち上がったら

  • step1: 次へ進む
  • step2: 次へ進む
  • step3:
    • あなたの店名: (適当)
    • メールアドレス: (適当)
    • 管理画面ログインID: (適当)
    • 管理画面パスワード: (適当)
    • 管理画面のディレクトリ名: (admin以外)
    • 次へ進む
  • step4:
    • データベースの種類: MySQL
    • データベースのホスト名: mysql
    • データベースのポート番号: (未入力 or 3306)
    • データベース名: eccubedb
    • ユーザ名: dbuser
    • パスワード: secret
    • 次へ進む
  • step5: 次へ進む

###mailcatcherの設定

ec-cube/.env

//省略
MAILER_URL=smtp://mailcatcher:1025
//省略

正直不必要な処理も入ってるかもしれませんが、ひとまず動きました。

参考: AmazonLinux2にphp7.2+Apacheの環境を作る & Docker

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?