Skip to content

Commit

Permalink
docker-compose.*.yml を分割
Browse files Browse the repository at this point in the history
- docker-compose.*.yml を追加
- docker-compose.<DB_TYPE>.yml を指定した場合で data/config/config.phpが存在しない場合は自動インストールされるよう修正
- docker-compose.dev.yml を指定した場合はローカル環境をマウントするよう修正
  • Loading branch information
nanasess committed Jan 5, 2021
1 parent 2eed9c7 commit 75d48b5
Show file tree
Hide file tree
Showing 8 changed files with 156 additions and 67 deletions.
29 changes: 7 additions & 22 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,29 +22,14 @@ EXPOSE 443

WORKDIR ${ECCUBE_PREFIX}

COPY . ${ECCUBE_PREFIX}
COPY dockerbuild/wait-for-*.sh /
RUN chmod +x /wait-for-*.sh

USER www-data
COPY composer.json ${ECCUBE_PREFIX}/composer.json
COPY composer.lock ${ECCUBE_PREFIX}/composer.lock

RUN composer install \
--no-scripts \
--no-autoloader \
-d ${ECCUBE_PREFIX} \
;
RUN composer selfupdate
RUN composer install --no-scripts --no-autoloader --no-dev -d ${ECCUBE_PREFIX}

COPY . ${ECCUBE_PREFIX}
RUN composer dumpautoload -o --apcu

# trueを指定した場合、DBマイグレーションやECCubeのキャッシュ作成をスキップする。
# ビルド時点でDBを起動出来ない場合等に指定が必要となる。
ARG SKIP_INSTALL_SCRIPT_ON_DOCKER_BUILD=false
ARG DBTYPE=mysql
ARG DBSERVER=db
ARG DBUSER=eccube_db_user
ARG DBPASS=password
ARG DBNAME=eccube_db
ARG HTTP_URL=https://localhost:4430
ARG HTTPS_URL=https://localhost:4430

RUN if [ ! -f ${ECCUBE_PREFIX}/data/config/config.php ] && [ ! ${SKIP_INSTALL_SCRIPT_ON_DOCKER_BUILD} = "true" ]; then \
${ECCUBE_PREFIX}/eccube_install.sh ${DBTYPE} \
; fi
6 changes: 6 additions & 0 deletions docker-compose.dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
version: '3'

services:
ec-cube:
volumes:
- ".:/var/www/app:delegated"
50 changes: 50 additions & 0 deletions docker-compose.mysql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
version: '3'

volumes:
mysql-database:
driver: local

services:
ec-cube:
command: apache2-foreground
entrypoint: /wait-for-mysql.sh
depends_on:
- mysql
environment:
TZ: Asia/Tokyo
PHP_POST_MAX_SIZE: 10M
PHP_UPLOAD_MAX_FILESIZE: 10M
PHP_LOG_ERRORS: "On"
PHP_ERROR_REPORTING: "E_ALL"
PHP_ERROR_LOG: "/proc/self/fd/2"
# EC-CUBE2 Config
HTTP_URL: https://localhost:4430/
HTTPS_URL: https://localhost:4430/
ROOT_URLPATH: /
DOMAIN_NAME: ~
DB_TYPE: mysql
DB_USER: eccube_db_user
DB_PASSWORD: password
DB_SERVER: mysql
DB_NAME: eccube_db
DB_PORT: ~
ADMIN_DIR: admin/
ADMIN_FORCE_SSL: 'false'
ADMIN_ALLOW_HOSTS: 'a:0:{}'
AUTH_MAGIC: ~
PASSWORD_HASH_ALGOS: sha256

mysql:
image: mysql:5.7
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
ports:
- '13306:3306'
volumes:
- mysql-database:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: eccube_db
MYSQL_USER: eccube_db_user
MYSQL_PASSWORD: password
networks:
- backend
48 changes: 48 additions & 0 deletions docker-compose.pgsql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
version: '3'

volumes:
pg-database:
driver: local

services:
ec-cube:
command: apache2-foreground
entrypoint: /wait-for-pgsql.sh
depends_on:
- postgres
environment:
TZ: Asia/Tokyo
PHP_POST_MAX_SIZE: 10M
PHP_UPLOAD_MAX_FILESIZE: 10M
PHP_LOG_ERRORS: "On"
PHP_ERROR_REPORTING: "E_ALL"
PHP_ERROR_LOG: "/proc/self/fd/2"
# EC-CUBE2 Config
HTTP_URL: https://localhost:4430/
HTTPS_URL: https://localhost:4430/
ROOT_URLPATH: /
DOMAIN_NAME: ~
DB_TYPE: pgsql
DB_USER: eccube_db_user
DB_PASSWORD: password
DB_SERVER: postgres
DB_NAME: eccube_db
DB_PORT: 5432
ADMIN_DIR: admin/
ADMIN_FORCE_SSL: 'false'
ADMIN_ALLOW_HOSTS: 'a:0:{}'
AUTH_MAGIC: ~
PASSWORD_HASH_ALGOS: sha256

postgres:
image: postgres
environment:
- POSTGRES_DB=eccube_db
- POSTGRES_USER=eccube_db_user
- POSTGRES_PASSWORD=password
ports:
- 15432:5432
volumes:
- pg-database:/var/lib/postgresql/data
networks:
- backend
49 changes: 4 additions & 45 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ networks:
driver: bridge

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

Expand All @@ -21,14 +17,11 @@ services:
build:
context: .
volumes:
- ".:/var/www/app:delegated"
### 同期対象からコストの重いフォルダを除外 #####################
- "vendor:/var/www/app/data/vendor"
ports:
- 8080:80
- 4430:443
depends_on:
- mysql
environment:
TZ: Asia/Tokyo
PHP_POST_MAX_SIZE: 10M
Expand All @@ -37,57 +30,23 @@ services:
PHP_ERROR_REPORTING: "E_ALL"
PHP_ERROR_LOG: "/proc/self/fd/2"
# EC-CUBE2 Config
HTTP_URL: http://localhost:8080/
HTTPS_URL: http://localhost:8080/
HTTP_URL: https://localhost:4430/
HTTPS_URL: https://localhost:4430/
ROOT_URLPATH: /
DOMAIN_NAME: ~
DB_TYPE: mysql
DB_USER: eccube_db_user
DB_PASSWORD: password
DB_SERVER: mysql
DB_NAME: eccube_db
DB_PORT: ~
ADMIN_DIR: admin/
ADMIN_FORCE_SSL: 'false'
ADMIN_ALLOW_HOSTS: 'a:0:{}'
AUTH_MAGIC: ~
PASSWORD_HASH_ALGOS: sha256
MAIL_BACKEND: smtp
SMTP_HOST: ~
SMTP_PORT: ~
SMTP_HOST: 127.0.0.1
SMTP_PORT: 1025
SMTP_USER: ~
SMTP_PASSWORD: ~
networks:
- backend

### MySQL ##################################
mysql:
image: mysql:5.7
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
ports:
- '13306:3306'
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: eccube_db
MYSQL_USER: eccube_db_user
MYSQL_PASSWORD: password
networks:
- backend

### Postgres ################################
postgres:
image: postgres
environment:
- POSTGRES_DB=eccube_db
- POSTGRES_USER=eccube_db_user
- POSTGRES_PASSWORD=password
ports:
- 15432:5432
volumes:
- pg-database:/var/lib/postgresql/data
networks:
- backend

### Mailcatcher ##################################
mailcatcher:
image: schickling/mailcatcher
Expand Down
2 changes: 2 additions & 0 deletions dockerbuild/.htaccess
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
order allow,deny
deny from all
20 changes: 20 additions & 0 deletions dockerbuild/wait-for-mysql.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash

set -e

echo "Waiting for mysql"
until mysql -h "${DB_SERVER}" --password="${MYSQL_ROOT_PASSWORD}" -uroot &> /dev/null
do
printf "."
sleep 1
done

>&2 echo "MySQL Ready"

if [ ! -f /var/www/app/data/config/config.php ]
then
echo "Install to ec-cube"
DBUSER=$DB_USER DBPASS=$DB_PASSWORD DBNAME=$DB_NAME DBPORT=$DB_PORT DBSERVER=$DB_SERVER /var/www/app/eccube_install.sh mysql
fi

exec docker-php-entrypoint "$@"
19 changes: 19 additions & 0 deletions dockerbuild/wait-for-pgsql.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash
set -e

export PGPASSWORD=$DB_PASSWORD
until psql -h "${DB_SERVER}" -U "${DB_USER}" -d "template1" -c '\l'; do
>&2 echo "Postgres is unavailable - sleeping"
printf "."
sleep 1
done

>&2 echo "Postgres is up - executing command"

if [ ! -f /var/www/app/data/config/config.php ]
then
echo "Install to ec-cube"
DBUSER=$DB_USER DBPASS=$DB_PASSWORD DBNAME=$DB_NAME DBPORT=$DB_PORT DBSERVER=$DB_SERVER /var/www/app/eccube_install.sh pgsql
fi

exec docker-php-entrypoint "$@"

0 comments on commit 75d48b5

Please sign in to comment.