mirror of
https://github.com/elyby/accounts.git
synced 2024-12-02 11:41:05 +05:30
Merge branch 'refactor_structure'
This commit is contained in:
commit
5d1dab6e92
@ -3,11 +3,9 @@
|
|||||||
|
|
||||||
# vendor будет заполнен уже внутри контейнера
|
# vendor будет заполнен уже внутри контейнера
|
||||||
vendor
|
vendor
|
||||||
# node_modules для этого контейнера не нужны
|
# Всё, что динамично на фронте
|
||||||
frontend/node_modules
|
frontend/node_modules
|
||||||
|
frontend/dist
|
||||||
# Все -local файлы
|
|
||||||
*/config/*-local.php
|
|
||||||
|
|
||||||
# Все временные файлы
|
# Все временные файлы
|
||||||
*/runtime
|
*/runtime
|
||||||
|
26
.env
26
.env
@ -1,2 +1,26 @@
|
|||||||
XDEBUG_CONFIG=remote_host=192.168.99.1
|
# Основные параметры
|
||||||
|
YII_DEBUG=true
|
||||||
|
YII_ENV=dev
|
||||||
|
JWT_USER_SECRET=edee109cad8b323d6d9edbcf406d945a989af6b6d251e4953a48df756695963a
|
||||||
|
|
||||||
|
# Web
|
||||||
|
VIRTUAL_HOST=account.ely.by.local,authserver.ely.by.local
|
||||||
|
AUTHSERVER_HOST=authserver.ely.by.local
|
||||||
|
# LETSENCRYPT_HOST=account.ely.by
|
||||||
|
# LETSENCRYPT_EMAIL=erickskrauch@ely.by
|
||||||
|
|
||||||
|
# MySQL
|
||||||
|
MYSQL_ALLOW_EMPTY_PASSWORD=yes
|
||||||
|
MYSQL_ROOT_PASSWORD=
|
||||||
|
MYSQL_DATABASE=ely_accounts
|
||||||
|
MYSQL_USER=ely_accounts_user
|
||||||
|
MYSQL_PASSWORD=ely_accounts_password
|
||||||
|
|
||||||
|
# RabbitMQ
|
||||||
|
RABBITMQ_DEFAULT_USER=ely-accounts-app
|
||||||
|
RABBITMQ_DEFAULT_PASS=ely-accounts-app-password
|
||||||
|
RABBITMQ_DEFAULT_VHOST=/ely.by
|
||||||
|
|
||||||
|
# Конфигурация для Dev.
|
||||||
|
XDEBUG_CONFIG=remote_host=10.254.254.254
|
||||||
PHP_IDE_CONFIG=serverName=docker
|
PHP_IDE_CONFIG=serverName=docker
|
||||||
|
26
.env-dist
Normal file
26
.env-dist
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Основные параметры
|
||||||
|
YII_DEBUG=true
|
||||||
|
YII_ENV=dev
|
||||||
|
JWT_USER_SECRET=
|
||||||
|
|
||||||
|
# Web
|
||||||
|
VIRTUAL_HOST=account.ely.by,authserver.ely.by
|
||||||
|
AUTHSERVER_HOST=authserver.ely.by
|
||||||
|
# LETSENCRYPT_HOST=account.ely.by
|
||||||
|
# LETSENCRYPT_EMAIL=erickskrauch@ely.by
|
||||||
|
|
||||||
|
# MySQL
|
||||||
|
MYSQL_ALLOW_EMPTY_PASSWORD=yes
|
||||||
|
MYSQL_ROOT_PASSWORD=
|
||||||
|
MYSQL_DATABASE=ely_accounts
|
||||||
|
MYSQL_USER=ely_accounts_user
|
||||||
|
MYSQL_PASSWORD=ely_accounts_password
|
||||||
|
|
||||||
|
# RabbitMQ
|
||||||
|
RABBITMQ_DEFAULT_USER=ely-accounts-app
|
||||||
|
RABBITMQ_DEFAULT_PASS=ely-accounts-app-password
|
||||||
|
RABBITMQ_DEFAULT_VHOST=/ely.by
|
||||||
|
|
||||||
|
# Конфигурация для Dev.
|
||||||
|
XDEBUG_CONFIG=remote_host=10.254.254.254
|
||||||
|
PHP_IDE_CONFIG=serverName=docker
|
37
.gitignore
vendored
37
.gitignore
vendored
@ -1,37 +1,22 @@
|
|||||||
# yii console command
|
|
||||||
/yii
|
|
||||||
|
|
||||||
# phpstorm project files
|
# phpstorm project files
|
||||||
.idea
|
.idea
|
||||||
|
|
||||||
# netbeans project files
|
# Composer
|
||||||
nbproject
|
|
||||||
|
|
||||||
# zend studio for eclipse project files
|
|
||||||
.buildpath
|
|
||||||
.project
|
|
||||||
.settings
|
|
||||||
|
|
||||||
# windows thumbnail cache
|
|
||||||
Thumbs.db
|
|
||||||
|
|
||||||
# composer vendor dir
|
|
||||||
/vendor
|
/vendor
|
||||||
|
/composer.lock
|
||||||
# composer itself is not needed
|
|
||||||
composer.phar
|
|
||||||
composer.lock
|
|
||||||
|
|
||||||
# Mac DS_Store Files
|
# Mac DS_Store Files
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
# phpunit itself is not needed
|
|
||||||
phpunit.phar
|
|
||||||
# local phpunit config
|
|
||||||
/phpunit.xml
|
|
||||||
|
|
||||||
# npm debug
|
# npm debug
|
||||||
npm-debug*
|
npm-debug*
|
||||||
|
|
||||||
# Docker override file
|
# Docker и его override файлы
|
||||||
docker-compose.override.yml
|
/docker-compose.yml
|
||||||
|
/docker-compose.override.yml
|
||||||
|
|
||||||
|
# Локальный .env
|
||||||
|
/.env
|
||||||
|
|
||||||
|
# id_rsa
|
||||||
|
/id_rsa
|
||||||
|
137
Dockerfile
137
Dockerfile
@ -1,8 +1,8 @@
|
|||||||
FROM php:7.1-fpm
|
FROM php:7.0-fpm
|
||||||
|
|
||||||
ENV PATH $PATH:/root/.composer/vendor/bin
|
ENV PATH $PATH:/root/.composer/vendor/bin
|
||||||
|
|
||||||
# PHP extensions come first, as they are less likely to change between Yii releases
|
# Сначала настраиваем всё, что нам нужно на системном уровне
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get -y install \
|
&& apt-get -y install \
|
||||||
git \
|
git \
|
||||||
@ -10,45 +10,53 @@ RUN apt-get update \
|
|||||||
libicu-dev \
|
libicu-dev \
|
||||||
libmcrypt-dev \
|
libmcrypt-dev \
|
||||||
zlib1g-dev \
|
zlib1g-dev \
|
||||||
|
bzip2 \
|
||||||
|
libbz2-dev \
|
||||||
|
liblzma-dev \
|
||||||
|
xz-utils \
|
||||||
|
openssh-server \
|
||||||
|
supervisor \
|
||||||
--no-install-recommends \
|
--no-install-recommends \
|
||||||
|
--force-yes \
|
||||||
|
|
||||||
# Install PHP extensions
|
# PHP расширения
|
||||||
&& docker-php-ext-install intl \
|
&& docker-php-ext-install intl \
|
||||||
&& docker-php-ext-install pdo_mysql \
|
&& docker-php-ext-install pdo_mysql \
|
||||||
&& docker-php-ext-install mbstring \
|
&& docker-php-ext-install mbstring \
|
||||||
&& docker-php-ext-install mcrypt \
|
&& docker-php-ext-install mcrypt \
|
||||||
&& docker-php-ext-install zip \
|
&& docker-php-ext-install zip \
|
||||||
&& docker-php-ext-install bcmath \
|
&& docker-php-ext-install bcmath \
|
||||||
|
&& docker-php-ext-install opcache \
|
||||||
|
|
||||||
&& apt-get purge -y g++ \
|
&& apt-get purge -y g++ \
|
||||||
&& apt-get autoremove -y \
|
&& apt-get autoremove -y \
|
||||||
&& rm -r /var/lib/apt/lists/* \
|
&& rm -r /var/lib/apt/lists/* \
|
||||||
|
|
||||||
# Don't clear our valuable environment vars in PHP
|
# Отключаем сброс глобальных env переменных внутри PHP
|
||||||
&& echo "\nclear_env = no" >> /usr/local/etc/php-fpm.conf \
|
&& echo "\nclear_env = no" >> /usr/local/etc/php-fpm.conf \
|
||||||
|
|
||||||
# Fix write permissions with shared folders
|
# Фикс прав на запись для расшаренных папок
|
||||||
&& usermod -u 1000 www-data
|
&& usermod -u 1000 www-data
|
||||||
|
|
||||||
# copy-paste from https://github.com/nodejs/docker-node/blob/910443c39c80291f0bf24712d8d94279cf15b7b5/6.5/wheezy/Dockerfile
|
# Копипаста из https://github.com/nodejs/docker-node/blob/50b56d39a236fd519eda2231757aa2173e270807/5.12/Dockerfile
|
||||||
|
|
||||||
# gpg keys listed at https://github.com/nodejs/node
|
# gpg keys listed at https://github.com/nodejs/node
|
||||||
RUN set -ex \
|
RUN set -ex \
|
||||||
&& for key in \
|
&& for key in \
|
||||||
9554F04D7259F04124DE6B476D5A82AC7E37093B \
|
9554F04D7259F04124DE6B476D5A82AC7E37093B \
|
||||||
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
|
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
|
||||||
0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \
|
0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \
|
||||||
FD3A5288F042B6850C66B31F09FE44734EB7990E \
|
FD3A5288F042B6850C66B31F09FE44734EB7990E \
|
||||||
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
|
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
|
||||||
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
|
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
|
||||||
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
|
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
|
||||||
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
|
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
|
||||||
; do \
|
; do \
|
||||||
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
|
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
ENV NPM_CONFIG_LOGLEVEL info
|
ENV NPM_CONFIG_LOGLEVEL info
|
||||||
ENV NODE_VERSION 6.5.0
|
ENV NODE_VERSION 5.12.0
|
||||||
|
|
||||||
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
|
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
|
||||||
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
|
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
|
||||||
@ -58,43 +66,84 @@ RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-
|
|||||||
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
|
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
|
||||||
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs
|
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs
|
||||||
|
|
||||||
# Поставим xdebug отдельно, т.к. потом его потенциально придётся отсюда убирать
|
|
||||||
RUN yes | pecl install xdebug \
|
|
||||||
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
|
|
||||||
&& echo "xdebug.default_enable=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
|
||||||
&& echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
|
||||||
&& echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
|
||||||
&& echo "xdebug.remote_mode=req" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
|
||||||
&& echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
|
||||||
&& echo "xdebug.remote_port=9000" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
|
||||||
&& echo "xdebug.remote_connect_back=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
|
||||||
&& echo "xdebug.cli_color=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
|
||||||
&& echo "xdebug.var_display_max_depth=10" >> /usr/local/etc/php/conf.d/xdebug.ini
|
|
||||||
|
|
||||||
ENV COMPOSER_NO_INTERACTION 1
|
ENV COMPOSER_NO_INTERACTION 1
|
||||||
|
ENV COMPOSER_ALLOW_SUPERUSER 1
|
||||||
|
ENV COMPOSER_DISCARD_CHANGES true
|
||||||
|
|
||||||
# Next composer and global composer package, as their versions may change from time to time
|
# Composer и его глобальные зависимости
|
||||||
RUN curl -sS https://getcomposer.org/installer | php \
|
RUN curl -sS https://getcomposer.org/installer | php \
|
||||||
&& mv composer.phar /usr/local/bin/composer.phar \
|
&& mv composer.phar /usr/local/bin/composer.phar \
|
||||||
&& echo '{"github-oauth": {"github.com": "***REMOVED***"}}' > ~/.composer/auth.json \
|
&& echo '{"github-oauth": {"github.com": "***REMOVED***"}}' > ~/.composer/auth.json \
|
||||||
&& composer.phar global require --no-progress "hirak/prestissimo:>=0.3.1"
|
&& composer.phar global require --no-progress "hirak/prestissimo:>=0.3.4"
|
||||||
|
|
||||||
COPY ./docker/php/composer.sh /usr/local/bin/composer
|
COPY ./docker/php/composer.sh /usr/local/bin/composer
|
||||||
RUN chmod a+x /usr/local/bin/composer
|
|
||||||
|
# Конфиг для php
|
||||||
|
COPY ./docker/php/php.ini /usr/local/etc/php/
|
||||||
|
|
||||||
|
# Конфиг для supervisor
|
||||||
|
COPY ./docker/php/supervisord.conf /etc/supervisord.conf
|
||||||
|
|
||||||
|
# wait-for-it
|
||||||
|
COPY ./docker/wait-for-it.sh /usr/local/bin/wait-for-it
|
||||||
|
|
||||||
|
# Наша кавайная точка входа
|
||||||
|
COPY ./docker/php/entrypoint.sh /usr/local/bin/
|
||||||
|
|
||||||
|
RUN chmod a+x /usr/local/bin/composer \
|
||||||
|
&& chmod a+x /usr/local/bin/entrypoint.sh \
|
||||||
|
&& chmod a+x /usr/local/bin/wait-for-it \
|
||||||
|
&& ln -s /usr/local/bin/entrypoint.sh / \
|
||||||
|
&& mkdir /root/.ssh
|
||||||
|
|
||||||
|
COPY id_rsa /root/.ssh
|
||||||
|
|
||||||
|
# Включаем поддержку ssh
|
||||||
|
RUN eval $(ssh-agent -s) \
|
||||||
|
&& ssh-add /root/.ssh/id_rsa \
|
||||||
|
&& touch /root/.ssh/known_hosts \
|
||||||
|
&& ssh-keyscan gitlab.com >> /root/.ssh/known_hosts
|
||||||
|
|
||||||
WORKDIR /var/www/html
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
# Custorm php configuration
|
# Копируем composer.json в родительскую директорию, которая не будет синкатся с хостом через
|
||||||
COPY ./docker/php/php.ini /usr/local/etc/php/
|
# volume на dev окружении. В entrypoint эта папка будет скопирована обратно.
|
||||||
|
COPY ./composer.json /var/www/composer.json
|
||||||
|
|
||||||
# Copy the working dir to the image's web root
|
# Устанавливаем зависимости PHP
|
||||||
|
RUN cd .. \
|
||||||
|
&& composer install --no-interaction --no-suggest --no-dev --optimize-autoloader \
|
||||||
|
&& cd -
|
||||||
|
|
||||||
|
# Устанавливаем зависимости для Node.js
|
||||||
|
# Делаем это отдельно, чтобы можно было воспользоваться кэшем, если от предыдущего билда
|
||||||
|
# ничего не менялось в зависимостях
|
||||||
|
RUN mkdir -p /var/www/frontend
|
||||||
|
|
||||||
|
COPY ./frontend/package.json /var/www/frontend/
|
||||||
|
COPY ./frontend/scripts /var/www/frontend/scripts
|
||||||
|
COPY ./frontend/webpack-utils /var/www/frontend/webpack-utils
|
||||||
|
|
||||||
|
RUN cd ../frontend \
|
||||||
|
&& npm install \
|
||||||
|
&& cd -
|
||||||
|
|
||||||
|
# Наконец переносим все сорцы внутрь контейнера
|
||||||
COPY . /var/www/html
|
COPY . /var/www/html
|
||||||
|
|
||||||
# The following directories are .dockerignored to not pollute the docker images
|
|
||||||
# with local logs and published assets from development. So we need to create
|
|
||||||
# empty dirs and set right permissions inside the container.
|
|
||||||
RUN mkdir -p api/runtime api/web/assets console/runtime \
|
RUN mkdir -p api/runtime api/web/assets console/runtime \
|
||||||
&& chown www-data:www-data api/runtime api/web/assets console/runtime
|
&& chown www-data:www-data api/runtime api/web/assets console/runtime \
|
||||||
|
# Билдим фронт
|
||||||
|
&& cd frontend \
|
||||||
|
&& ln -s /var/www/frontend/node_modules $PWD/node_modules \
|
||||||
|
&& npm run build \
|
||||||
|
&& rm node_modules \
|
||||||
|
# Копируем билд наружу, чтобы его не затёрло volume в dev режиме
|
||||||
|
&& cp -r ./dist /var/www/dist \
|
||||||
|
&& cd -
|
||||||
|
|
||||||
# Expose everything under /var/www (vendor + html)
|
# Экспозим всё под /var/www/html для дальнейшей связки с nginx
|
||||||
VOLUME ["/var/www"]
|
VOLUME ["/var/www/html"]
|
||||||
|
|
||||||
|
ENTRYPOINT ["entrypoint.sh"]
|
||||||
|
CMD ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"]
|
||||||
|
162
Dockerfile-dev
Normal file
162
Dockerfile-dev
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
FROM php:7.0-fpm
|
||||||
|
|
||||||
|
ENV PATH $PATH:/root/.composer/vendor/bin
|
||||||
|
|
||||||
|
# Сначала настраиваем всё, что нам нужно на системном уровне
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get -y install \
|
||||||
|
git \
|
||||||
|
g++ \
|
||||||
|
libicu-dev \
|
||||||
|
libmcrypt-dev \
|
||||||
|
zlib1g-dev \
|
||||||
|
bzip2 \
|
||||||
|
libbz2-dev \
|
||||||
|
liblzma-dev \
|
||||||
|
xz-utils \
|
||||||
|
openssh-server \
|
||||||
|
supervisor \
|
||||||
|
--no-install-recommends \
|
||||||
|
--force-yes \
|
||||||
|
|
||||||
|
# PHP расширения
|
||||||
|
&& docker-php-ext-install intl \
|
||||||
|
&& docker-php-ext-install pdo_mysql \
|
||||||
|
&& docker-php-ext-install mbstring \
|
||||||
|
&& docker-php-ext-install mcrypt \
|
||||||
|
&& docker-php-ext-install zip \
|
||||||
|
&& docker-php-ext-install bcmath \
|
||||||
|
&& docker-php-ext-install opcache \
|
||||||
|
|
||||||
|
&& apt-get purge -y g++ \
|
||||||
|
&& apt-get autoremove -y \
|
||||||
|
&& rm -r /var/lib/apt/lists/* \
|
||||||
|
|
||||||
|
# Отключаем сброс глобальных env переменных внутри PHP
|
||||||
|
&& echo "\nclear_env = no" >> /usr/local/etc/php-fpm.conf \
|
||||||
|
|
||||||
|
# Фикс прав на запись для расшаренных папок
|
||||||
|
&& usermod -u 1000 www-data
|
||||||
|
|
||||||
|
# Копипаста из https://github.com/nodejs/docker-node/blob/50b56d39a236fd519eda2231757aa2173e270807/5.12/Dockerfile
|
||||||
|
|
||||||
|
# gpg keys listed at https://github.com/nodejs/node
|
||||||
|
RUN set -ex \
|
||||||
|
&& for key in \
|
||||||
|
9554F04D7259F04124DE6B476D5A82AC7E37093B \
|
||||||
|
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
|
||||||
|
0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \
|
||||||
|
FD3A5288F042B6850C66B31F09FE44734EB7990E \
|
||||||
|
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
|
||||||
|
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
|
||||||
|
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
|
||||||
|
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
|
||||||
|
; do \
|
||||||
|
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
ENV NPM_CONFIG_LOGLEVEL info
|
||||||
|
ENV NODE_VERSION 5.12.0
|
||||||
|
|
||||||
|
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
|
||||||
|
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
|
||||||
|
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
|
||||||
|
&& grep " node-v$NODE_VERSION-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
|
||||||
|
&& tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \
|
||||||
|
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
|
||||||
|
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs
|
||||||
|
|
||||||
|
# Поставим xdebug отдельно, т.к. потом его потенциально придётся отсюда убирать
|
||||||
|
RUN yes | pecl install xdebug \
|
||||||
|
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
|
||||||
|
&& echo "xdebug.default_enable=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
||||||
|
&& echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
||||||
|
&& echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
||||||
|
&& echo "xdebug.remote_mode=req" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
||||||
|
&& echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
||||||
|
&& echo "xdebug.remote_port=9000" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
||||||
|
&& echo "xdebug.remote_connect_back=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
||||||
|
&& echo "xdebug.cli_color=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
|
||||||
|
&& echo "xdebug.var_display_max_depth=10" >> /usr/local/etc/php/conf.d/xdebug.ini
|
||||||
|
|
||||||
|
ENV COMPOSER_NO_INTERACTION 1
|
||||||
|
ENV COMPOSER_ALLOW_SUPERUSER 1
|
||||||
|
ENV COMPOSER_DISCARD_CHANGES true
|
||||||
|
|
||||||
|
# Composer и его глобальные зависимости
|
||||||
|
RUN curl -sS https://getcomposer.org/installer | php \
|
||||||
|
&& mv composer.phar /usr/local/bin/composer.phar \
|
||||||
|
&& echo '{"github-oauth": {"github.com": "***REMOVED***"}}' > ~/.composer/auth.json \
|
||||||
|
&& composer.phar global require --no-progress "hirak/prestissimo:>=0.3.4"
|
||||||
|
|
||||||
|
COPY ./docker/php/composer.sh /usr/local/bin/composer
|
||||||
|
|
||||||
|
# Конфиг для php
|
||||||
|
COPY ./docker/php/php.ini /usr/local/etc/php/
|
||||||
|
|
||||||
|
# Конфиг для supervisor
|
||||||
|
COPY ./docker/php/supervisord.conf /etc/supervisord.conf
|
||||||
|
|
||||||
|
# wait-for-it
|
||||||
|
COPY ./docker/wait-for-it.sh /usr/local/bin/wait-for-it
|
||||||
|
|
||||||
|
# Наша кавайная точка входа
|
||||||
|
COPY ./docker/php/entrypoint.sh /usr/local/bin/
|
||||||
|
|
||||||
|
RUN chmod a+x /usr/local/bin/composer \
|
||||||
|
&& chmod a+x /usr/local/bin/entrypoint.sh \
|
||||||
|
&& chmod a+x /usr/local/bin/wait-for-it \
|
||||||
|
&& ln -s /usr/local/bin/entrypoint.sh / \
|
||||||
|
&& mkdir /root/.ssh
|
||||||
|
|
||||||
|
COPY id_rsa /root/.ssh
|
||||||
|
|
||||||
|
# Включаем поддержку ssh
|
||||||
|
RUN eval $(ssh-agent -s) \
|
||||||
|
&& ssh-add /root/.ssh/id_rsa \
|
||||||
|
&& touch /root/.ssh/known_hosts \
|
||||||
|
&& ssh-keyscan gitlab.com >> /root/.ssh/known_hosts
|
||||||
|
|
||||||
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
|
# Копируем composer.json в родительскую директорию, которая не будет синкатся с хостом через
|
||||||
|
# volume на dev окружении. В entrypoint эта папка будет скопирована обратно.
|
||||||
|
COPY ./composer.json /var/www/composer.json
|
||||||
|
|
||||||
|
# Устанавливаем зависимости PHP
|
||||||
|
RUN cd .. \
|
||||||
|
&& composer install --no-interaction --no-suggest \
|
||||||
|
&& cd -
|
||||||
|
|
||||||
|
# Устанавливаем зависимости для Node.js
|
||||||
|
# Делаем это отдельно, чтобы можно было воспользоваться кэшем, если от предыдущего билда
|
||||||
|
# ничего не менялось в зависимостях
|
||||||
|
RUN mkdir -p /var/www/frontend
|
||||||
|
|
||||||
|
COPY ./frontend/package.json /var/www/frontend/
|
||||||
|
COPY ./frontend/scripts /var/www/frontend/scripts
|
||||||
|
COPY ./frontend/webpack-utils /var/www/frontend/webpack-utils
|
||||||
|
|
||||||
|
RUN cd ../frontend \
|
||||||
|
&& npm install \
|
||||||
|
&& cd -
|
||||||
|
|
||||||
|
# Наконец переносим все сорцы внутрь контейнера
|
||||||
|
COPY . /var/www/html
|
||||||
|
|
||||||
|
RUN mkdir -p api/runtime api/web/assets console/runtime \
|
||||||
|
&& chown www-data:www-data api/runtime api/web/assets console/runtime \
|
||||||
|
# Билдим фронт
|
||||||
|
&& cd frontend \
|
||||||
|
&& ln -s /var/www/frontend/node_modules $PWD/node_modules \
|
||||||
|
&& npm run build \
|
||||||
|
&& rm node_modules \
|
||||||
|
# Копируем билд наружу, чтобы его не затёрло volume в dev режиме
|
||||||
|
&& cp -r ./dist /var/www/dist \
|
||||||
|
&& cd -
|
||||||
|
|
||||||
|
# Экспозим всё под /var/www/html для дальнейшей связки с nginx
|
||||||
|
VOLUME ["/var/www/html"]
|
||||||
|
|
||||||
|
ENTRYPOINT ["entrypoint.sh"]
|
||||||
|
CMD ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"]
|
72
README.md
72
README.md
@ -1,4 +1,4 @@
|
|||||||
# Account Ely.by
|
# Accounts Ely.by
|
||||||
|
|
||||||
## Развёртывание dev
|
## Развёртывание dev
|
||||||
|
|
||||||
@ -6,61 +6,49 @@
|
|||||||
[docker](https://docs.docker.com/engine/installation/) и его
|
[docker](https://docs.docker.com/engine/installation/) и его
|
||||||
[docker-compose](https://docs.docker.com/compose/install/).
|
[docker-compose](https://docs.docker.com/compose/install/).
|
||||||
|
|
||||||
Сливаем репозиторий:
|
Кроме того, нужно установить, настроить и запустить [nginx-proxy](https://gitlab.com/elyby/nginx-proxy)
|
||||||
|
контейнер. Это делается один раз в рамках системы и в дальнейшем используется и для других проектов.
|
||||||
|
|
||||||
|
За тем сливаем репозиторий:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone git@bitbucket.org:ErickSkrauch/ely.by-account.git account.ely.by.local
|
git clone git@gitlab.com:elyby/account.git account.ely.by
|
||||||
cd account.ely.by.local
|
cd account.ely.by.local
|
||||||
```
|
```
|
||||||
|
|
||||||
Выполняем первый запуск контейнеров:
|
Далее нужно создать `.env`, `docker-compose.yml` и `id_rsa` файлы:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cp .env-dist .env
|
||||||
|
cp docker-compose.dev.yml docker-compose.yml
|
||||||
|
cp ~/.ssh/id_rsa id_rsa # Использовать ссылку нельзя
|
||||||
|
```
|
||||||
|
|
||||||
|
Касательно файла id_rsa: часть зависимостей находятся в наших приватных репозиториях, получить
|
||||||
|
доступ куда можно только в том случае, если в контейнере окажется ключ, который имеет доступ к этим
|
||||||
|
репозиториям.
|
||||||
|
|
||||||
|
Все вышеперечисленные файла находятся под gitignore, так что с полученными файлами можно произвести
|
||||||
|
все необходимые манипуляции под конкретный кейс использования. **В файле `.env` обязательно следует
|
||||||
|
задать `JWT_USER_SECRET`, иначе авторизация на бекенде не заработает.**
|
||||||
|
|
||||||
|
После этого просто выполняем старт всех контейнеров:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
Далее нужно влезть в работающие контейнеры и сделать что-нибудь, что их настроит.
|
Они автоматически сбилдятся и начнут свою работу.
|
||||||
|
|
||||||
### Как влезть в работающий контейнер
|
### Как влезть в работающий контейнер
|
||||||
|
|
||||||
Сперва, с помощью команды `docker ps` мы увидим все запущенные контейнеры. Нас интересуют значения из первой колонки
|
Сперва, с помощью команды `docker ps` мы увидим все запущенные контейнеры. Нас интересуют значения
|
||||||
CONTAINER ID. Узнать, чему они соответствуют можно прочитав название IMAGE из 2 колонки. Чтобы выполнить команду
|
из первой колонки CONTAINER ID или NAMES. Узнать, чему они соответствуют можно прочитав название IMAGE
|
||||||
внутри работабщего контейнера, нужно выполнить:
|
из 2 колонки. Чтобы выполнить команду внутри работабщего контейнера, нужно выполнить:
|
||||||
|
|
||||||
```
|
```
|
||||||
docker exec -it a7c267b27f49 /bin/bash
|
docker exec -it accountelyby_app_1 bash
|
||||||
```
|
```
|
||||||
|
|
||||||
Где `a7c267b27f49` - одно из значений из первой колонки. Для выхода из контейнера используем `exit`.
|
Где `accountelyby_app_1` - одно из значений CONTAINER ID или NAMES. Для выхода из контейнера
|
||||||
|
используем `exit`.
|
||||||
-------------------------
|
|
||||||
|
|
||||||
Так вот, нам нужно выполнить ряд команд. Здесь и далее я буду писать имена контейнеров в их соответствии с compose
|
|
||||||
файлом, но в реалиях их нужно будет заменить на реальные значения:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# Настройка php контейнера
|
|
||||||
docker exec -it app php init --env=Docker
|
|
||||||
docker exec -it app php composer install
|
|
||||||
docker exec -it app php ./yii migrate --interactive=0
|
|
||||||
|
|
||||||
# Настройка node контейнера
|
|
||||||
docker exec -it node-dev-server npm i
|
|
||||||
docker exec -it node-dev-server npm --prefix ./webpack i ./webpack
|
|
||||||
docker exec -it node-dev-server npm --prefix ./scripts i ./scripts
|
|
||||||
|
|
||||||
# Настройка rabbitmq контейнера
|
|
||||||
docker exec -it rabbitmq /init.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
После этого перезапускаем все контейнеры командой:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
docker-compose restart
|
|
||||||
```
|
|
||||||
|
|
||||||
## Тестирование php бэкэнда
|
|
||||||
|
|
||||||
```sh
|
|
||||||
./tests/run-tests.sh
|
|
||||||
```
|
|
||||||
|
@ -7,7 +7,6 @@ use Emarref\Jwt\Algorithm\AlgorithmInterface;
|
|||||||
use Emarref\Jwt\Algorithm\Hs256;
|
use Emarref\Jwt\Algorithm\Hs256;
|
||||||
use Emarref\Jwt\Claim;
|
use Emarref\Jwt\Claim;
|
||||||
use Emarref\Jwt\Encryption\Factory as EncryptionFactory;
|
use Emarref\Jwt\Encryption\Factory as EncryptionFactory;
|
||||||
use Emarref\Jwt\Encryption\Factory;
|
|
||||||
use Emarref\Jwt\Exception\VerificationException;
|
use Emarref\Jwt\Exception\VerificationException;
|
||||||
use Emarref\Jwt\Jwt;
|
use Emarref\Jwt\Jwt;
|
||||||
use Emarref\Jwt\Token;
|
use Emarref\Jwt\Token;
|
||||||
@ -122,7 +121,7 @@ class Component extends YiiUserComponent {
|
|||||||
|
|
||||||
$jwt = new Jwt();
|
$jwt = new Jwt();
|
||||||
$token = $jwt->deserialize($jwtString);
|
$token = $jwt->deserialize($jwtString);
|
||||||
$context = new VerificationContext(Factory::create($this->getAlgorithm()));
|
$context = new VerificationContext(EncryptionFactory::create($this->getAlgorithm()));
|
||||||
$context->setAudience($hostInfo);
|
$context->setAudience($hostInfo);
|
||||||
$context->setIssuer($hostInfo);
|
$context->setIssuer($hostInfo);
|
||||||
$jwt->verify($token, $context);
|
$jwt->verify($token, $context);
|
||||||
|
1
api/config/.gitignore
vendored
1
api/config/.gitignore
vendored
@ -1,2 +1 @@
|
|||||||
main-local.php
|
main-local.php
|
||||||
params-local.php
|
|
19
api/config/config-dev.php
Normal file
19
api/config/config-dev.php
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
return [
|
||||||
|
'bootstrap' => ['debug', 'gii'],
|
||||||
|
'components' => [
|
||||||
|
'reCaptcha' => [
|
||||||
|
'public' => '6LfwqCYTAAAAAJlaJpqCdzESCjAXUC81Ca6jBHR7',
|
||||||
|
'secret' => '6LfwqCYTAAAAAFPjHmgwmnjSMFeAOJh7Lk5xxDMC',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'modules' => [
|
||||||
|
'debug' => [
|
||||||
|
'class' => yii\debug\Module::class,
|
||||||
|
'allowedIPs' => ['*'],
|
||||||
|
],
|
||||||
|
'gii' => [
|
||||||
|
'class' => yii\gii\Module::class,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
@ -1,9 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$params = array_merge(
|
$params = array_merge(
|
||||||
require(__DIR__ . '/../../common/config/params.php'),
|
require(__DIR__ . '/../../common/config/params.php'),
|
||||||
require(__DIR__ . '/../../common/config/params-local.php'),
|
require(__DIR__ . '/params.php')
|
||||||
require(__DIR__ . '/params.php'),
|
|
||||||
require(__DIR__ . '/params-local.php')
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
@ -14,17 +12,17 @@ return [
|
|||||||
'params' => $params,
|
'params' => $params,
|
||||||
'components' => [
|
'components' => [
|
||||||
'user' => [
|
'user' => [
|
||||||
'class' => \api\components\User\Component::class,
|
'class' => api\components\User\Component::class,
|
||||||
'secret' => $params['userSecret'],
|
'secret' => getenv('JWT_USER_SECRET'),
|
||||||
],
|
],
|
||||||
'apiUser' => [
|
'apiUser' => [
|
||||||
'class' => \api\components\ApiUser\Component::class,
|
'class' => api\components\ApiUser\Component::class,
|
||||||
],
|
],
|
||||||
'log' => [
|
'log' => [
|
||||||
'traceLevel' => YII_DEBUG ? 3 : 0,
|
'traceLevel' => YII_DEBUG ? 3 : 0,
|
||||||
'targets' => [
|
'targets' => [
|
||||||
[
|
[
|
||||||
'class' => \yii\log\FileTarget::class,
|
'class' => yii\log\FileTarget::class,
|
||||||
'levels' => ['error', 'warning'],
|
'levels' => ['error', 'warning'],
|
||||||
'except' => [
|
'except' => [
|
||||||
'legacy-authserver',
|
'legacy-authserver',
|
||||||
@ -34,13 +32,13 @@ return [
|
|||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'class' => \yii\log\FileTarget::class,
|
'class' => yii\log\FileTarget::class,
|
||||||
'levels' => ['error', 'info'],
|
'levels' => ['error', 'info'],
|
||||||
'categories' => ['legacy-authserver'],
|
'categories' => ['legacy-authserver'],
|
||||||
'logFile' => '@runtime/logs/authserver.log',
|
'logFile' => '@runtime/logs/authserver.log',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'class' => \yii\log\FileTarget::class,
|
'class' => yii\log\FileTarget::class,
|
||||||
'levels' => ['error', 'info'],
|
'levels' => ['error', 'info'],
|
||||||
'categories' => ['session'],
|
'categories' => ['session'],
|
||||||
'logFile' => '@runtime/logs/session.log',
|
'logFile' => '@runtime/logs/session.log',
|
||||||
@ -56,26 +54,26 @@ return [
|
|||||||
'rules' => require __DIR__ . '/routes.php',
|
'rules' => require __DIR__ . '/routes.php',
|
||||||
],
|
],
|
||||||
'reCaptcha' => [
|
'reCaptcha' => [
|
||||||
'class' => \api\components\ReCaptcha\Component::class,
|
'class' => api\components\ReCaptcha\Component::class,
|
||||||
],
|
],
|
||||||
'response' => [
|
'response' => [
|
||||||
'format' => \yii\web\Response::FORMAT_JSON,
|
'format' => yii\web\Response::FORMAT_JSON,
|
||||||
],
|
],
|
||||||
'oauth' => [
|
'oauth' => [
|
||||||
'class' => \common\components\oauth\Component::class,
|
'class' => common\components\oauth\Component::class,
|
||||||
'grantTypes' => ['authorization_code'],
|
'grantTypes' => ['authorization_code'],
|
||||||
],
|
],
|
||||||
'errorHandler' => [
|
'errorHandler' => [
|
||||||
'class' => \api\components\ErrorHandler::class,
|
'class' => api\components\ErrorHandler::class,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'modules' => [
|
'modules' => [
|
||||||
'authserver' => [
|
'authserver' => [
|
||||||
'class' => \api\modules\authserver\Module::class,
|
'class' => api\modules\authserver\Module::class,
|
||||||
'baseDomain' => $params['authserverDomain'],
|
'baseDomain' => getenv('AUTHSERVER_HOST'),
|
||||||
],
|
],
|
||||||
'session' => [
|
'session' => [
|
||||||
'class' => \api\modules\session\Module::class,
|
'class' => api\modules\session\Module::class,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
@ -1,4 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
return [
|
return [
|
||||||
'adminEmail' => 'admin@example.com',
|
'authserverHost' => getenv('AUTHSERVER_HOST'),
|
||||||
];
|
];
|
||||||
|
@ -25,6 +25,7 @@ class SessionController extends ApiController {
|
|||||||
$behaviors['rateLimiting'] = [
|
$behaviors['rateLimiting'] = [
|
||||||
'class' => RateLimiter::class,
|
'class' => RateLimiter::class,
|
||||||
'only' => ['has-joined', 'has-joined-legacy'],
|
'only' => ['has-joined', 'has-joined-legacy'],
|
||||||
|
'authserverDomain' => Yii::$app->params['authserverHost'],
|
||||||
];
|
];
|
||||||
|
|
||||||
return $behaviors;
|
return $behaviors;
|
||||||
|
@ -18,10 +18,6 @@ class RateLimiter extends \yii\filters\RateLimiter {
|
|||||||
|
|
||||||
public function init() {
|
public function init() {
|
||||||
parent::init();
|
parent::init();
|
||||||
if ($this->authserverDomain === null) {
|
|
||||||
$this->authserverDomain = Yii::$app->params['authserverDomain'] ?? null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->authserverDomain === null) {
|
if ($this->authserverDomain === null) {
|
||||||
throw new InvalidConfigException('authserverDomain param is required');
|
throw new InvalidConfigException('authserverDomain param is required');
|
||||||
}
|
}
|
||||||
@ -45,7 +41,7 @@ class RateLimiter extends \yii\filters\RateLimiter {
|
|||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
public function checkRateLimit($user, $request, $response, $action) {
|
public function checkRateLimit($user, $request, $response, $action) {
|
||||||
if ($request->getHostInfo() === $this->authserverDomain) {
|
if (parse_url($request->getHostInfo(), PHP_URL_HOST) === $this->authserverDomain) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
api/web/.gitignore
vendored
2
api/web/.gitignore
vendored
@ -1,2 +0,0 @@
|
|||||||
/index.php
|
|
||||||
/index-test.php
|
|
Binary file not shown.
Before Width: | Height: | Size: 318 B |
14
api/web/index.php
Normal file
14
api/web/index.php
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
require __DIR__ . '/../../vendor/autoload.php';
|
||||||
|
|
||||||
|
defined('YII_DEBUG') or define('YII_DEBUG', (boolean)getenv('YII_DEBUG'));
|
||||||
|
defined('YII_ENV') or define('YII_ENV', getenv('YII_ENV'));
|
||||||
|
|
||||||
|
require __DIR__ . '/../../vendor/yiisoft/yii2/Yii.php';
|
||||||
|
require __DIR__ . '/../../common/config/bootstrap.php';
|
||||||
|
require __DIR__ . '/../config/bootstrap.php';
|
||||||
|
|
||||||
|
$config = \common\config\ConfigLoader::load('api');
|
||||||
|
|
||||||
|
$application = new yii\web\Application($config);
|
||||||
|
$application->run();
|
3
common/config/.gitignore
vendored
3
common/config/.gitignore
vendored
@ -1,2 +1 @@
|
|||||||
main-local.php
|
config-local.php
|
||||||
params-local.php
|
|
||||||
|
65
common/config/ConfigLoader.php
Normal file
65
common/config/ConfigLoader.php
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
namespace common\config;
|
||||||
|
|
||||||
|
use yii\helpers\ArrayHelper;
|
||||||
|
|
||||||
|
class ConfigLoader {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO: В PHP 7.1 следует сделать её protected
|
||||||
|
*/
|
||||||
|
const ROOT_PATH = __DIR__ . '/../..';
|
||||||
|
|
||||||
|
private $application;
|
||||||
|
|
||||||
|
public function __construct(string $application) {
|
||||||
|
$this->application = $application;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getEnvironment() : string {
|
||||||
|
return YII_ENV;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getConfig() : array {
|
||||||
|
$toMerge = [
|
||||||
|
require __DIR__ . '/config.php',
|
||||||
|
];
|
||||||
|
|
||||||
|
// Общие окружение-зависимые настройки
|
||||||
|
$path = __DIR__ . '/config-' . YII_ENV . '.php';
|
||||||
|
if (file_exists($path)) {
|
||||||
|
$toMerge[] = require $path;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Общие локальные настройки
|
||||||
|
$path = __DIR__ . '/config-local.php';
|
||||||
|
if (file_exists($path)) {
|
||||||
|
$toMerge[] = require $path;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Настройки конкретного приложения
|
||||||
|
$path = self::ROOT_PATH . '/' . $this->application . '/config/config.php';
|
||||||
|
if (file_exists($path)) {
|
||||||
|
$toMerge[] = require $path;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Настройки конкретного приложения для действующего окружения
|
||||||
|
$path = self::ROOT_PATH . '/' . $this->application . '/config/config-' . YII_ENV . '.php';
|
||||||
|
if (file_exists($path)) {
|
||||||
|
$toMerge[] = require $path;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Локальные настройки конкретного приложения
|
||||||
|
$path = self::ROOT_PATH . '/' . $this->application . '/config/config-local.php';
|
||||||
|
if (file_exists($path)) {
|
||||||
|
$toMerge[] = require $path;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ArrayHelper::merge(...$toMerge);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function load(string $application) : array {
|
||||||
|
return (new static($application))->getConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
8
common/config/config-dev.php
Normal file
8
common/config/config-dev.php
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
return [
|
||||||
|
'components' => [
|
||||||
|
'mailer' => [
|
||||||
|
'useFileTransport' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
@ -8,6 +8,9 @@ return [
|
|||||||
],
|
],
|
||||||
'db' => [
|
'db' => [
|
||||||
'class' => yii\db\Connection::class,
|
'class' => yii\db\Connection::class,
|
||||||
|
'dsn' => 'mysql:host=db;dbname=' . getenv('MYSQL_DATABASE'),
|
||||||
|
'username' => getenv('MYSQL_USER'),
|
||||||
|
'password' => getenv('MYSQL_PASSWORD'),
|
||||||
'charset' => 'utf8',
|
'charset' => 'utf8',
|
||||||
],
|
],
|
||||||
'mailer' => [
|
'mailer' => [
|
||||||
@ -19,12 +22,21 @@ return [
|
|||||||
],
|
],
|
||||||
'redis' => [
|
'redis' => [
|
||||||
'class' => yii\redis\Connection::class,
|
'class' => yii\redis\Connection::class,
|
||||||
|
'hostname' => 'redis',
|
||||||
|
'password' => null,
|
||||||
|
'port' => 6379,
|
||||||
|
'database' => 0,
|
||||||
],
|
],
|
||||||
'amqp' => [
|
'amqp' => [
|
||||||
'class' => \common\components\RabbitMQ\Component::class,
|
'class' => common\components\RabbitMQ\Component::class,
|
||||||
|
'host' => 'rabbitmq',
|
||||||
|
'port' => 5672,
|
||||||
|
'user' => getenv('RABBITMQ_DEFAULT_USER'),
|
||||||
|
'password' => getenv('RABBITMQ_DEFAULT_PASS'),
|
||||||
|
'vhost' => getenv('RABBITMQ_DEFAULT_VHOST'),
|
||||||
],
|
],
|
||||||
'guzzle' => [
|
'guzzle' => [
|
||||||
'class' => \GuzzleHttp\Client::class,
|
'class' => GuzzleHttp\Client::class,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'aliases' => [
|
'aliases' => [
|
@ -1,6 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
return [
|
return [
|
||||||
'adminEmail' => 'admin@example.com',
|
'fromEmail' => 'account@ely.by',
|
||||||
'supportEmail' => 'support@example.com',
|
'supportEmail' => 'support@ely.by',
|
||||||
'user.passwordResetTokenExpire' => 3600,
|
|
||||||
];
|
];
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
"ely/yii2-tempmail-validator": "~1.0.0",
|
"ely/yii2-tempmail-validator": "~1.0.0",
|
||||||
"emarref/jwt": "~1.0.3",
|
"emarref/jwt": "~1.0.3",
|
||||||
"ely/amqp-controller": "^0.1.0",
|
"ely/amqp-controller": "^0.1.0",
|
||||||
"ely/email-renderer": "dev-master#10e77d7a60403e87ca6e8c7d9e62a36fc5e08565"
|
"ely/email-renderer": "dev-master#4a751652b5a325d44d3bc79a464dda9232486cbc"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"yiisoft/yii2-codeception": "*",
|
"yiisoft/yii2-codeception": "*",
|
||||||
@ -33,10 +33,11 @@
|
|||||||
"yiisoft/yii2-gii": "*",
|
"yiisoft/yii2-gii": "*",
|
||||||
"yiisoft/yii2-faker": "*",
|
"yiisoft/yii2-faker": "*",
|
||||||
"flow/jsonpath": "^0.3.1",
|
"flow/jsonpath": "^0.3.1",
|
||||||
"codeception/codeception": "~2.1.10",
|
"codeception/codeception": "~2.2.4",
|
||||||
"codeception/specify": "*",
|
"codeception/specify": "*",
|
||||||
"codeception/verify": "*",
|
"codeception/verify": "*",
|
||||||
"phploc/phploc": "^3.0.1"
|
"phploc/phploc": "^3.0.1",
|
||||||
|
"predis/predis": "^1.0"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"process-timeout": 1800
|
"process-timeout": 1800
|
||||||
|
1
console/config/.gitignore
vendored
1
console/config/.gitignore
vendored
@ -1,2 +1 @@
|
|||||||
main-local.php
|
main-local.php
|
||||||
params-local.php
|
|
@ -1,21 +1,20 @@
|
|||||||
<?php
|
<?php
|
||||||
$params = array_merge(
|
$params = array_merge(
|
||||||
require(__DIR__ . '/../../common/config/params.php'),
|
require(__DIR__ . '/../../common/config/params.php'),
|
||||||
require(__DIR__ . '/../../common/config/params-local.php'),
|
require(__DIR__ . '/params.php')
|
||||||
require(__DIR__ . '/params.php'),
|
|
||||||
require(__DIR__ . '/params-local.php')
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'id' => 'app-console',
|
'id' => 'accounts-console',
|
||||||
'basePath' => dirname(__DIR__),
|
'basePath' => dirname(__DIR__),
|
||||||
'bootstrap' => ['log'],
|
'bootstrap' => ['log'],
|
||||||
'controllerNamespace' => 'console\controllers',
|
'controllerNamespace' => 'console\controllers',
|
||||||
|
'params' => $params,
|
||||||
'components' => [
|
'components' => [
|
||||||
'log' => [
|
'log' => [
|
||||||
'targets' => [
|
'targets' => [
|
||||||
[
|
[
|
||||||
'class' => 'yii\log\FileTarget',
|
'class' => yii\log\FileTarget::class,
|
||||||
'levels' => ['error', 'warning'],
|
'levels' => ['error', 'warning'],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
@ -23,9 +22,8 @@ return [
|
|||||||
],
|
],
|
||||||
'controllerMap' => [
|
'controllerMap' => [
|
||||||
'migrate' => [
|
'migrate' => [
|
||||||
'class' => 'yii\console\controllers\MigrateController',
|
'class' => yii\console\controllers\MigrateController::class,
|
||||||
'templateFile' => '@console/views/migration.php',
|
'templateFile' => '@console/views/migration.php',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'params' => $params,
|
|
||||||
];
|
];
|
@ -1,4 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
return [
|
return [
|
||||||
'adminEmail' => 'admin@example.com',
|
|
||||||
];
|
];
|
||||||
|
2
data/mysql/.gitignore
vendored
Normal file
2
data/mysql/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
*
|
||||||
|
!.gitignore
|
2
data/redis/.gitignore
vendored
Normal file
2
data/redis/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
*
|
||||||
|
!.gitignore
|
74
docker-compose.dev.yml
Normal file
74
docker-compose.dev.yml
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
version: '2'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
build:
|
||||||
|
dockerfile: Dockerfile-dev
|
||||||
|
context: .
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
- redis
|
||||||
|
- rabbitmq
|
||||||
|
volumes:
|
||||||
|
- ./:/var/www/html/
|
||||||
|
env_file: .env
|
||||||
|
|
||||||
|
web:
|
||||||
|
build: ./docker/nginx
|
||||||
|
volumes_from:
|
||||||
|
- app
|
||||||
|
links:
|
||||||
|
- app:php
|
||||||
|
env_file: .env
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
- nginx-proxy
|
||||||
|
|
||||||
|
db:
|
||||||
|
build: ./docker/mariadb
|
||||||
|
env_file: .env
|
||||||
|
volumes:
|
||||||
|
- ./data/mysql:/var/lib/mysql
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:3.0-alpine
|
||||||
|
volumes:
|
||||||
|
- ./data/redis:/data
|
||||||
|
|
||||||
|
rabbitmq:
|
||||||
|
image: rabbitmq:3.6-management
|
||||||
|
env_file: .env
|
||||||
|
environment:
|
||||||
|
- VIRTUAL_HOST=rabbitmq.account.ely.by.local
|
||||||
|
- VIRTUAL_PORT=15672
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
- nginx-proxy
|
||||||
|
|
||||||
|
phpmyadmin:
|
||||||
|
build: ./docker/phpmyadmin
|
||||||
|
environment:
|
||||||
|
- PMA_ARBITRARY=1
|
||||||
|
- PMA_USER=root
|
||||||
|
- PMA_PASSWORD=
|
||||||
|
- VIRTUAL_HOST=pma.account.ely.by.local
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
- nginx-proxy
|
||||||
|
|
||||||
|
# Эта штука работает дико медленно, грузит процессор и т.д. и т.п.
|
||||||
|
# Раскоментировать только в случае лютой надобности
|
||||||
|
#node-dev-server:
|
||||||
|
# build: ./frontend
|
||||||
|
# ports:
|
||||||
|
# - "8080:8080"
|
||||||
|
# volumes:
|
||||||
|
# - ./frontend/:/usr/src/app/
|
||||||
|
# environment:
|
||||||
|
# DOCKERIZED: "true"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
nginx-proxy:
|
||||||
|
external:
|
||||||
|
name: nginx-proxy
|
40
docker-compose.prod.yml
Normal file
40
docker-compose.prod.yml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
version: '2'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
build: .
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
- redis
|
||||||
|
- rabbitmq
|
||||||
|
env_file: .env
|
||||||
|
|
||||||
|
web:
|
||||||
|
build: ./docker/nginx
|
||||||
|
volumes_from:
|
||||||
|
- app
|
||||||
|
links:
|
||||||
|
- app:php
|
||||||
|
env_file: .env
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
- nginx-proxy
|
||||||
|
|
||||||
|
db:
|
||||||
|
build: ./docker/mariadb
|
||||||
|
env_file: .env
|
||||||
|
volumes:
|
||||||
|
- ./data/mysql:/var/lib/mysql
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:3.0-alpine
|
||||||
|
volumes:
|
||||||
|
- ./data/redis:/data
|
||||||
|
|
||||||
|
rabbitmq:
|
||||||
|
image: rabbitmq:3.6
|
||||||
|
env_file: .env
|
||||||
|
|
||||||
|
networks:
|
||||||
|
nginx-proxy:
|
||||||
|
external:
|
||||||
|
name: nginx-proxy
|
@ -1,66 +1,48 @@
|
|||||||
version: '2'
|
version: '2'
|
||||||
services:
|
services:
|
||||||
app:
|
app:
|
||||||
build: .
|
build:
|
||||||
links:
|
dockerfile: Dockerfile-dev
|
||||||
|
context: .
|
||||||
|
depends_on:
|
||||||
- db
|
- db
|
||||||
- redis
|
- redis
|
||||||
- rabbitmq
|
- rabbitmq
|
||||||
depends_on:
|
|
||||||
- app-console-account-queue
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./:/var/www/html/
|
- ./:/var/www/html/
|
||||||
env_file: .env
|
env_file: .env
|
||||||
|
|
||||||
web:
|
web:
|
||||||
build: ./docker/nginx
|
build: ./docker/nginx
|
||||||
links:
|
|
||||||
- app
|
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- app
|
- app
|
||||||
environment:
|
|
||||||
- AUTHSERVER_HOST=authserver.ely.by
|
|
||||||
- PHP_LINK=app
|
|
||||||
|
|
||||||
node-dev-server:
|
|
||||||
build: ./frontend
|
|
||||||
ports:
|
|
||||||
- "8080:8080"
|
|
||||||
volumes:
|
|
||||||
- ./frontend/:/usr/src/app/
|
|
||||||
environment:
|
|
||||||
DOCKERIZED: "true"
|
|
||||||
|
|
||||||
app-console-account-queue:
|
|
||||||
build: .
|
|
||||||
volumes:
|
|
||||||
- ./:/var/www/html/
|
|
||||||
command: ./docker/wait-for-it.sh rabbitmq:5672 -- ./yii account-queue
|
|
||||||
links:
|
links:
|
||||||
- db
|
- app:php
|
||||||
- redis
|
env_file: .env
|
||||||
- rabbitmq
|
networks:
|
||||||
|
- default
|
||||||
|
- nginx-proxy
|
||||||
|
|
||||||
db:
|
db:
|
||||||
build: ./docker/mariadb
|
build: ./docker/mariadb
|
||||||
environment:
|
env_file: .env
|
||||||
MYSQL_ROOT_PASSWORD: ""
|
volumes:
|
||||||
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
- ./data/mysql:/var/lib/mysql
|
||||||
MYSQL_DATABASE: "ely_accounts"
|
|
||||||
MYSQL_USER: "ely_accounts_user"
|
|
||||||
MYSQL_PASSWORD: "ely_accounts_password"
|
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:3.0
|
image: redis:3.0-alpine
|
||||||
|
volumes:
|
||||||
|
- ./data/redis:/data
|
||||||
|
|
||||||
rabbitmq:
|
rabbitmq:
|
||||||
build: ./docker/rabbitmq
|
image: rabbitmq:3.6-management
|
||||||
|
env_file: .env
|
||||||
environment:
|
environment:
|
||||||
RABBITMQ_DEFAULT_USER: "ely-accounts-app"
|
- VIRTUAL_HOST=rabbitmq.account.ely.by.local
|
||||||
RABBITMQ_DEFAULT_PASS: "ely-accounts-app-password"
|
- VIRTUAL_PORT=15672
|
||||||
RABBITMQ_DEFAULT_VHOST: "/ely.by"
|
networks:
|
||||||
ports:
|
- default
|
||||||
- "15672:15672" # Manager interface
|
- nginx-proxy
|
||||||
|
|
||||||
phpmyadmin:
|
phpmyadmin:
|
||||||
build: ./docker/phpmyadmin
|
build: ./docker/phpmyadmin
|
||||||
@ -68,7 +50,14 @@ services:
|
|||||||
- PMA_ARBITRARY=1
|
- PMA_ARBITRARY=1
|
||||||
- PMA_USER=root
|
- PMA_USER=root
|
||||||
- PMA_PASSWORD=
|
- PMA_PASSWORD=
|
||||||
ports:
|
- VIRTUAL_HOST=pma.account.ely.by.local
|
||||||
- "8181:80"
|
depends_on:
|
||||||
links:
|
|
||||||
- db
|
- db
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
- nginx-proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
nginx-proxy:
|
||||||
|
external:
|
||||||
|
name: nginx-proxy
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
FROM mariadb:10.0
|
FROM mariadb:10.0
|
||||||
|
|
||||||
COPY mariadb.cnf /etc/mysql/conf.d
|
COPY mariadb.cnf /etc/mysql/conf.d
|
||||||
|
|
||||||
|
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||||
|
CMD ["mysqld"]
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM nginx:1.11
|
FROM nginx:1.11-alpine
|
||||||
|
|
||||||
COPY nginx.conf /etc/nginx/nginx.conf
|
COPY nginx.conf /etc/nginx/nginx.conf
|
||||||
COPY account.ely.by.conf.template /etc/nginx/conf.d/account.ely.by.conf.template
|
COPY account.ely.by.conf.template /etc/nginx/conf.d/account.ely.by.conf.template
|
||||||
@ -7,4 +7,5 @@ COPY run.sh /run.sh
|
|||||||
RUN rm /etc/nginx/conf.d/default.conf \
|
RUN rm /etc/nginx/conf.d/default.conf \
|
||||||
&& chmod a+x /run.sh
|
&& chmod a+x /run.sh
|
||||||
|
|
||||||
CMD ["/run.sh"]
|
ENTRYPOINT ["/run.sh"]
|
||||||
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
|
@ -34,7 +34,7 @@ server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
location ~* \.php$ {
|
location ~* \.php$ {
|
||||||
fastcgi_pass ${PHP_LINK}:9000;
|
fastcgi_pass php:9000;
|
||||||
include fastcgi_params;
|
include fastcgi_params;
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
fastcgi_param SERVER_NAME $host;
|
fastcgi_param SERVER_NAME $host;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
envsubst '$AUTHSERVER_HOST:$PHP_LINK' < /etc/nginx/conf.d/account.ely.by.conf.template > /etc/nginx/conf.d/default.conf
|
envsubst '$AUTHSERVER_HOST' < /etc/nginx/conf.d/account.ely.by.conf.template > /etc/nginx/conf.d/default.conf
|
||||||
nginx -g 'daemon off;'
|
|
||||||
|
exec "$@"
|
||||||
|
33
docker/php/entrypoint.sh
Normal file
33
docker/php/entrypoint.sh
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd /var/www/html
|
||||||
|
|
||||||
|
if [ "$1" = 'bash' ]
|
||||||
|
then
|
||||||
|
exec "$@"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Переносим vendor, если его нету или он изменился (или затёрся силами volume)
|
||||||
|
if ! cmp -s ./../vendor/autoload.php ./vendor/autoload.php
|
||||||
|
then
|
||||||
|
echo "vendor have diffs..."
|
||||||
|
echo "removing exists vendor"
|
||||||
|
rm -rf ./vendor
|
||||||
|
echo "copying new one"
|
||||||
|
cp -r ./../vendor ./vendor
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Переносим dist, если его нету или он изменился (или затёрся силами volume)
|
||||||
|
if ! cmp -s ./../dist/index.html ./frontend/dist/index.html
|
||||||
|
then
|
||||||
|
echo "frontend dist have diffs..."
|
||||||
|
echo "removing exists dist"
|
||||||
|
rm -rf ./frontend/dist
|
||||||
|
echo "copying new one"
|
||||||
|
cp -r ./../dist ./frontend/dist
|
||||||
|
fi
|
||||||
|
|
||||||
|
wait-for-it db:3306 -- "./yii migrate/up --interactive=0"
|
||||||
|
|
||||||
|
exec "$@"
|
36
docker/php/supervisord.conf
Normal file
36
docker/php/supervisord.conf
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
[supervisord]
|
||||||
|
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
|
||||||
|
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
|
||||||
|
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
|
||||||
|
loglevel=info ; (log level;default info; others: debug,warn,trace)
|
||||||
|
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
|
||||||
|
nodaemon=false ; (start in foreground if true;default false)
|
||||||
|
minfds=1024 ; (min. avail startup file descriptors;default 1024)
|
||||||
|
minprocs=200 ; (min. avail process descriptors;default 200)
|
||||||
|
user=root
|
||||||
|
|
||||||
|
; the below section must remain in the config file for RPC
|
||||||
|
; (supervisorctl/web interface) to work, additional interfaces may be
|
||||||
|
; added by defining them in separate rpcinterface: sections
|
||||||
|
[rpcinterface:supervisor]
|
||||||
|
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
|
||||||
|
|
||||||
|
[supervisorctl]
|
||||||
|
serverurl=unix:///dev/shm/supervisor.sock ; use a unix:// URL for a unix socket
|
||||||
|
|
||||||
|
[program:php-fpm]
|
||||||
|
command=php-fpm
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
priority=5
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
stderr_logfile=/dev/stderr
|
||||||
|
stderr_logfile_maxbytes=0
|
||||||
|
|
||||||
|
[program:account-queue-worker]
|
||||||
|
directory=/var/www/html
|
||||||
|
command=wait-for-it rabbitmq:5672 -- php yii account-queue
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
priority=10
|
@ -3,3 +3,6 @@ FROM phpmyadmin/phpmyadmin
|
|||||||
RUN printf "\n\nrequire('./config.local.php');\n" >> /www/config.inc.php
|
RUN printf "\n\nrequire('./config.local.php');\n" >> /www/config.inc.php
|
||||||
|
|
||||||
COPY config.local.php /www/
|
COPY config.local.php /www/
|
||||||
|
|
||||||
|
ENTRYPOINT [ "/run.sh" ]
|
||||||
|
CMD ["phpmyadmin"]
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
FROM rabbitmq:3.6
|
|
||||||
|
|
||||||
RUN rabbitmq-plugins enable rabbitmq_management \
|
|
||||||
&& rabbitmq-plugins enable rabbitmq_web_stomp \
|
|
||||||
&& rabbitmq-plugins enable rabbitmq_mqtt
|
|
@ -1,26 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
$config = [
|
|
||||||
'components' => [
|
|
||||||
'request' => [
|
|
||||||
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
|
|
||||||
'cookieValidationKey' => '',
|
|
||||||
'enableCsrfValidation' => false,
|
|
||||||
],
|
|
||||||
'reCaptcha' => [
|
|
||||||
'public' => '',
|
|
||||||
'secret' => '',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
];
|
|
||||||
|
|
||||||
if (!YII_ENV_TEST) {
|
|
||||||
// configuration adjustments for 'dev' environment
|
|
||||||
$config['bootstrap'][] = 'debug';
|
|
||||||
$config['modules']['debug'] = 'yii\debug\Module';
|
|
||||||
|
|
||||||
$config['bootstrap'][] = 'gii';
|
|
||||||
$config['modules']['gii'] = 'yii\gii\Module';
|
|
||||||
}
|
|
||||||
|
|
||||||
return $config;
|
|
@ -1,5 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
'userSecret' => 'some-long-secret-key',
|
|
||||||
'authserverDomain' => 'http://authserver.ely.by.local',
|
|
||||||
];
|
|
@ -1,18 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
// NOTE: Make sure this file is not accessible when deployed to production
|
|
||||||
if (!in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'])) {
|
|
||||||
die('You are not allowed to access this file.');
|
|
||||||
}
|
|
||||||
|
|
||||||
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
|
||||||
defined('YII_ENV') or define('YII_ENV', 'test');
|
|
||||||
|
|
||||||
require(__DIR__ . '/../../vendor/autoload.php');
|
|
||||||
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
|
|
||||||
require(__DIR__ . '/../../common/config/bootstrap.php');
|
|
||||||
require(__DIR__ . '/../config/bootstrap.php');
|
|
||||||
|
|
||||||
$config = require(__DIR__ . '/../../tests/codeception/config/api/acceptance.php');
|
|
||||||
|
|
||||||
(new yii\web\Application($config))->run();
|
|
@ -1,18 +0,0 @@
|
|||||||
<?php
|
|
||||||
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
|
||||||
defined('YII_ENV') or define('YII_ENV', 'dev');
|
|
||||||
|
|
||||||
require(__DIR__ . '/../../vendor/autoload.php');
|
|
||||||
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
|
|
||||||
require(__DIR__ . '/../../common/config/bootstrap.php');
|
|
||||||
require(__DIR__ . '/../config/bootstrap.php');
|
|
||||||
|
|
||||||
$config = yii\helpers\ArrayHelper::merge(
|
|
||||||
require(__DIR__ . '/../../common/config/main.php'),
|
|
||||||
require(__DIR__ . '/../../common/config/main-local.php'),
|
|
||||||
require(__DIR__ . '/../config/main.php'),
|
|
||||||
require(__DIR__ . '/../config/main-local.php')
|
|
||||||
);
|
|
||||||
|
|
||||||
$application = new yii\web\Application($config);
|
|
||||||
$application->run();
|
|
@ -1,29 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
'components' => [
|
|
||||||
'db' => [
|
|
||||||
'dsn' => 'mysql:host=localhost;dbname=ely_accounts',
|
|
||||||
'username' => 'root',
|
|
||||||
'password' => '',
|
|
||||||
],
|
|
||||||
'mailer' => [
|
|
||||||
// send all mails to a file by default. You have to set
|
|
||||||
// 'useFileTransport' to false and configure a transport
|
|
||||||
// for the mailer to send real emails.
|
|
||||||
'useFileTransport' => true,
|
|
||||||
],
|
|
||||||
'redis' => [
|
|
||||||
'hostname' => 'localhost',
|
|
||||||
'password' => null,
|
|
||||||
'port' => 6379,
|
|
||||||
'database' => 0,
|
|
||||||
],
|
|
||||||
'amqp' => [
|
|
||||||
'host' => 'localhost',
|
|
||||||
'port' => 5672,
|
|
||||||
'user' => 'ely-accounts-app',
|
|
||||||
'password' => 'app-password',
|
|
||||||
'vhost' => '/account.ely.by',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
];
|
|
@ -1,5 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
'fromEmail' => 'account@ely.by',
|
|
||||||
'supportEmail' => 'support@ely.by',
|
|
||||||
];
|
|
@ -1,3 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
];
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env php
|
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Yii console bootstrap file.
|
|
||||||
*
|
|
||||||
* @link http://www.yiiframework.com/
|
|
||||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
||||||
* @license http://www.yiiframework.com/license/
|
|
||||||
*/
|
|
||||||
|
|
||||||
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
|
||||||
defined('YII_ENV') or define('YII_ENV', 'dev');
|
|
||||||
|
|
||||||
require(__DIR__ . '/vendor/autoload.php');
|
|
||||||
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
|
|
||||||
require(__DIR__ . '/common/config/bootstrap.php');
|
|
||||||
require(__DIR__ . '/console/config/bootstrap.php');
|
|
||||||
|
|
||||||
$config = yii\helpers\ArrayHelper::merge(
|
|
||||||
require(__DIR__ . '/common/config/main.php'),
|
|
||||||
require(__DIR__ . '/common/config/main-local.php'),
|
|
||||||
require(__DIR__ . '/console/config/main.php'),
|
|
||||||
require(__DIR__ . '/console/config/main-local.php')
|
|
||||||
);
|
|
||||||
|
|
||||||
$application = new yii\console\Application($config);
|
|
||||||
$exitCode = $application->run();
|
|
||||||
exit($exitCode);
|
|
@ -1,2 +0,0 @@
|
|||||||
XDEBUG_CONFIG=remote_host=192.168.99.1
|
|
||||||
PHP_IDE_CONFIG=serverName=docker
|
|
@ -1,25 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
$config = [
|
|
||||||
'components' => [
|
|
||||||
'request' => [
|
|
||||||
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
|
|
||||||
'cookieValidationKey' => '',
|
|
||||||
],
|
|
||||||
'reCaptcha' => [
|
|
||||||
'public' => '',
|
|
||||||
'secret' => '',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
];
|
|
||||||
|
|
||||||
if (!YII_ENV_TEST) {
|
|
||||||
// configuration adjustments for 'dev' environment
|
|
||||||
$config['bootstrap'][] = 'debug';
|
|
||||||
$config['modules']['debug'] = \yii\debug\Module::class;
|
|
||||||
|
|
||||||
$config['bootstrap'][] = 'gii';
|
|
||||||
$config['modules']['gii'] = \yii\gii\Module::class;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $config;
|
|
@ -1,5 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
'userSecret' => 'some-long-secret-key',
|
|
||||||
'authserverDomain' => 'https://authserver.ely.by',
|
|
||||||
];
|
|
@ -1,18 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
// NOTE: Make sure this file is not accessible when deployed to production
|
|
||||||
if (!in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'])) {
|
|
||||||
die('You are not allowed to access this file.');
|
|
||||||
}
|
|
||||||
|
|
||||||
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
|
||||||
defined('YII_ENV') or define('YII_ENV', 'test');
|
|
||||||
|
|
||||||
require(__DIR__ . '/../../vendor/autoload.php');
|
|
||||||
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
|
|
||||||
require(__DIR__ . '/../../common/config/bootstrap.php');
|
|
||||||
require(__DIR__ . '/../config/bootstrap.php');
|
|
||||||
|
|
||||||
$config = require(__DIR__ . '/../../tests/codeception/config/api/acceptance.php');
|
|
||||||
|
|
||||||
(new yii\web\Application($config))->run();
|
|
@ -1,18 +0,0 @@
|
|||||||
<?php
|
|
||||||
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
|
||||||
defined('YII_ENV') or define('YII_ENV', 'dev');
|
|
||||||
|
|
||||||
require(__DIR__ . '/../../vendor/autoload.php');
|
|
||||||
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
|
|
||||||
require(__DIR__ . '/../../common/config/bootstrap.php');
|
|
||||||
require(__DIR__ . '/../config/bootstrap.php');
|
|
||||||
|
|
||||||
$config = yii\helpers\ArrayHelper::merge(
|
|
||||||
require(__DIR__ . '/../../common/config/main.php'),
|
|
||||||
require(__DIR__ . '/../../common/config/main-local.php'),
|
|
||||||
require(__DIR__ . '/../config/main.php'),
|
|
||||||
require(__DIR__ . '/../config/main-local.php')
|
|
||||||
);
|
|
||||||
|
|
||||||
$application = new yii\web\Application($config);
|
|
||||||
$application->run();
|
|
@ -1,26 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
'components' => [
|
|
||||||
'db' => [
|
|
||||||
'dsn' => 'mysql:host=db;dbname=ely_accounts',
|
|
||||||
'username' => 'ely_accounts_user',
|
|
||||||
'password' => 'ely_accounts_password',
|
|
||||||
],
|
|
||||||
'mailer' => [
|
|
||||||
'useFileTransport' => true,
|
|
||||||
],
|
|
||||||
'redis' => [
|
|
||||||
'hostname' => 'redis',
|
|
||||||
'password' => null,
|
|
||||||
'port' => 6379,
|
|
||||||
'database' => 0,
|
|
||||||
],
|
|
||||||
'amqp' => [
|
|
||||||
'host' => 'rabbitmq',
|
|
||||||
'port' => 5672,
|
|
||||||
'user' => 'ely-accounts-app',
|
|
||||||
'password' => 'ely-accounts-app-password',
|
|
||||||
'vhost' => '/ely.by',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
];
|
|
@ -1,5 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
'fromEmail' => 'account@ely.by',
|
|
||||||
'supportEmail' => 'support@ely.by',
|
|
||||||
];
|
|
@ -1,7 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
'bootstrap' => ['gii'],
|
|
||||||
'modules' => [
|
|
||||||
'gii' => \yii\gii\Module::class,
|
|
||||||
],
|
|
||||||
];
|
|
@ -1,3 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
];
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env php
|
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Yii console bootstrap file.
|
|
||||||
*
|
|
||||||
* @link http://www.yiiframework.com/
|
|
||||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
||||||
* @license http://www.yiiframework.com/license/
|
|
||||||
*/
|
|
||||||
|
|
||||||
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
|
||||||
defined('YII_ENV') or define('YII_ENV', 'dev');
|
|
||||||
|
|
||||||
require(__DIR__ . '/vendor/autoload.php');
|
|
||||||
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
|
|
||||||
require(__DIR__ . '/common/config/bootstrap.php');
|
|
||||||
require(__DIR__ . '/console/config/bootstrap.php');
|
|
||||||
|
|
||||||
$config = yii\helpers\ArrayHelper::merge(
|
|
||||||
require(__DIR__ . '/common/config/main.php'),
|
|
||||||
require(__DIR__ . '/common/config/main-local.php'),
|
|
||||||
require(__DIR__ . '/console/config/main.php'),
|
|
||||||
require(__DIR__ . '/console/config/main-local.php')
|
|
||||||
);
|
|
||||||
|
|
||||||
$application = new yii\console\Application($config);
|
|
||||||
$exitCode = $application->run();
|
|
||||||
exit($exitCode);
|
|
@ -1,73 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* The manifest of files that are local to specific environment.
|
|
||||||
* This file returns a list of environments that the application
|
|
||||||
* may be installed under. The returned data must be in the following
|
|
||||||
* format:
|
|
||||||
*
|
|
||||||
* ```php
|
|
||||||
* return [
|
|
||||||
* 'environment name' => [
|
|
||||||
* 'path' => 'directory storing the local files',
|
|
||||||
* 'skipFiles' => [
|
|
||||||
* // list of files that should only copied once and skipped if they already exist
|
|
||||||
* ],
|
|
||||||
* 'setWritable' => [
|
|
||||||
* // list of directories that should be set writable
|
|
||||||
* ],
|
|
||||||
* 'setExecutable' => [
|
|
||||||
* // list of files that should be set executable
|
|
||||||
* ],
|
|
||||||
* 'setCookieValidationKey' => [
|
|
||||||
* // list of config files that need to be inserted with automatically generated cookie validation keys
|
|
||||||
* ],
|
|
||||||
* 'createSymlink' => [
|
|
||||||
* // list of symlinks to be created. Keys are symlinks, and values are the targets.
|
|
||||||
* ],
|
|
||||||
* ],
|
|
||||||
* ];
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
return [
|
|
||||||
'Development' => [
|
|
||||||
'path' => 'dev',
|
|
||||||
'setWritable' => [
|
|
||||||
'api/runtime',
|
|
||||||
'api/web/assets',
|
|
||||||
],
|
|
||||||
'setExecutable' => [
|
|
||||||
'yii',
|
|
||||||
'tests/codeception/bin/yii',
|
|
||||||
],
|
|
||||||
'setCookieValidationKey' => [
|
|
||||||
'api/config/main-local.php',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'Docker' => [
|
|
||||||
'path' => 'docker',
|
|
||||||
'setWritable' => [
|
|
||||||
'api/runtime',
|
|
||||||
'api/web/assets',
|
|
||||||
],
|
|
||||||
'setExecutable' => [
|
|
||||||
'yii',
|
|
||||||
'tests/codeception/bin/yii',
|
|
||||||
],
|
|
||||||
'setCookieValidationKey' => [
|
|
||||||
'api/config/main-local.php',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'Production' => [
|
|
||||||
'path' => 'prod',
|
|
||||||
'setWritable' => [
|
|
||||||
'api/runtime',
|
|
||||||
'api/web/assets',
|
|
||||||
],
|
|
||||||
'setExecutable' => [
|
|
||||||
'yii',
|
|
||||||
],
|
|
||||||
'setCookieValidationKey' => [
|
|
||||||
'api/config/main-local.php',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
];
|
|
@ -1,13 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
'components' => [
|
|
||||||
'request' => [
|
|
||||||
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
|
|
||||||
'cookieValidationKey' => '',
|
|
||||||
],
|
|
||||||
'reCaptcha' => [
|
|
||||||
'public' => '',
|
|
||||||
'secret' => '',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
];
|
|
@ -1,5 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
'userSecret' => 'some-long-secret-key',
|
|
||||||
'authserverDomain' => 'https://authserver.ely.by',
|
|
||||||
];
|
|
@ -1,18 +0,0 @@
|
|||||||
<?php
|
|
||||||
defined('YII_DEBUG') or define('YII_DEBUG', false);
|
|
||||||
defined('YII_ENV') or define('YII_ENV', 'prod');
|
|
||||||
|
|
||||||
require(__DIR__ . '/../../vendor/autoload.php');
|
|
||||||
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
|
|
||||||
require(__DIR__ . '/../../common/config/bootstrap.php');
|
|
||||||
require(__DIR__ . '/../config/bootstrap.php');
|
|
||||||
|
|
||||||
$config = yii\helpers\ArrayHelper::merge(
|
|
||||||
require(__DIR__ . '/../../common/config/main.php'),
|
|
||||||
require(__DIR__ . '/../../common/config/main-local.php'),
|
|
||||||
require(__DIR__ . '/../config/main.php'),
|
|
||||||
require(__DIR__ . '/../config/main-local.php')
|
|
||||||
);
|
|
||||||
|
|
||||||
$application = new yii\web\Application($config);
|
|
||||||
$application->run();
|
|
@ -1,23 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
'components' => [
|
|
||||||
'db' => [
|
|
||||||
'dsn' => 'mysql:host=localhost;dbname=ely_accounts',
|
|
||||||
'username' => 'root',
|
|
||||||
'password' => '',
|
|
||||||
],
|
|
||||||
'redis' => [
|
|
||||||
'hostname' => 'localhost',
|
|
||||||
'password' => null,
|
|
||||||
'port' => 6379,
|
|
||||||
'database' => 0,
|
|
||||||
],
|
|
||||||
'amqp' => [
|
|
||||||
'host' => 'localhost',
|
|
||||||
'port' => 5672,
|
|
||||||
'user' => 'ely-accounts-app',
|
|
||||||
'password' => 'app-password',
|
|
||||||
'vhost' => '/account.ely.by',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
];
|
|
@ -1,5 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
'fromEmail' => 'account@ely.by',
|
|
||||||
'supportEmail' => 'support@ely.by',
|
|
||||||
];
|
|
@ -1,3 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
];
|
|
@ -1,3 +0,0 @@
|
|||||||
<?php
|
|
||||||
return [
|
|
||||||
];
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env php
|
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Yii console bootstrap file.
|
|
||||||
*
|
|
||||||
* @link http://www.yiiframework.com/
|
|
||||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
||||||
* @license http://www.yiiframework.com/license/
|
|
||||||
*/
|
|
||||||
|
|
||||||
defined('YII_DEBUG') or define('YII_DEBUG', false);
|
|
||||||
defined('YII_ENV') or define('YII_ENV', 'prod');
|
|
||||||
|
|
||||||
require(__DIR__ . '/vendor/autoload.php');
|
|
||||||
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
|
|
||||||
require(__DIR__ . '/common/config/bootstrap.php');
|
|
||||||
require(__DIR__ . '/console/config/bootstrap.php');
|
|
||||||
|
|
||||||
$config = yii\helpers\ArrayHelper::merge(
|
|
||||||
require(__DIR__ . '/common/config/main.php'),
|
|
||||||
require(__DIR__ . '/common/config/main-local.php'),
|
|
||||||
require(__DIR__ . '/console/config/main.php'),
|
|
||||||
require(__DIR__ . '/console/config/main-local.php')
|
|
||||||
);
|
|
||||||
|
|
||||||
$application = new yii\console\Application($config);
|
|
||||||
$exitCode = $application->run();
|
|
||||||
exit($exitCode);
|
|
209
init
209
init
@ -1,209 +0,0 @@
|
|||||||
#!/usr/bin/env php
|
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Yii Application Initialization Tool
|
|
||||||
*
|
|
||||||
* In order to run in non-interactive mode:
|
|
||||||
*
|
|
||||||
* init --env=Development --overwrite=n
|
|
||||||
*
|
|
||||||
* @author Alexander Makarov <sam@rmcreative.ru>
|
|
||||||
*
|
|
||||||
* @link http://www.yiiframework.com/
|
|
||||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
||||||
* @license http://www.yiiframework.com/license/
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!extension_loaded('openssl')) {
|
|
||||||
die('The OpenSSL PHP extension is required by Yii2.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$params = getParams();
|
|
||||||
$root = str_replace('\\', '/', __DIR__);
|
|
||||||
$envs = require("$root/environments/index.php");
|
|
||||||
$envNames = array_keys($envs);
|
|
||||||
|
|
||||||
echo "Yii Application Initialization Tool v1.0\n\n";
|
|
||||||
|
|
||||||
$envName = null;
|
|
||||||
if (empty($params['env']) || $params['env'] === '1') {
|
|
||||||
echo "Which environment do you want the application to be initialized in?\n\n";
|
|
||||||
foreach ($envNames as $i => $name) {
|
|
||||||
echo " [$i] $name\n";
|
|
||||||
}
|
|
||||||
echo "\n Your choice [0-" . (count($envs) - 1) . ', or "q" to quit] ';
|
|
||||||
$answer = trim(fgets(STDIN));
|
|
||||||
|
|
||||||
if (!ctype_digit($answer) || !in_array($answer, range(0, count($envs) - 1))) {
|
|
||||||
echo "\n Quit initialization.\n";
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($envNames[$answer])) {
|
|
||||||
$envName = $envNames[$answer];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$envName = $params['env'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!in_array($envName, $envNames)) {
|
|
||||||
$envsList = implode(', ', $envNames);
|
|
||||||
echo "\n $envName is not a valid environment. Try one of the following: $envsList. \n";
|
|
||||||
exit(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
$env = $envs[$envName];
|
|
||||||
|
|
||||||
if (empty($params['env'])) {
|
|
||||||
echo "\n Initialize the application under '{$envNames[$answer]}' environment? [yes|no] ";
|
|
||||||
$answer = trim(fgets(STDIN));
|
|
||||||
if (strncasecmp($answer, 'y', 1)) {
|
|
||||||
echo "\n Quit initialization.\n";
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "\n Start initialization ...\n\n";
|
|
||||||
$files = getFileList("$root/environments/{$env['path']}");
|
|
||||||
if (isset($env['skipFiles'])) {
|
|
||||||
$skipFiles = $env['skipFiles'];
|
|
||||||
array_walk($skipFiles, function(&$value) use($env, $root) { $value = "$root/$value"; });
|
|
||||||
$files = array_diff($files, array_intersect_key($env['skipFiles'], array_filter($skipFiles, 'file_exists')));
|
|
||||||
}
|
|
||||||
$all = false;
|
|
||||||
foreach ($files as $file) {
|
|
||||||
if (!copyFile($root, "environments/{$env['path']}/$file", $file, $all, $params)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$callbacks = ['setCookieValidationKey', 'setWritable', 'setExecutable', 'createSymlink'];
|
|
||||||
foreach ($callbacks as $callback) {
|
|
||||||
if (!empty($env[$callback])) {
|
|
||||||
$callback($root, $env[$callback]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "\n ... initialization completed.\n\n";
|
|
||||||
|
|
||||||
function getFileList($root, $basePath = '')
|
|
||||||
{
|
|
||||||
$files = [];
|
|
||||||
$handle = opendir($root);
|
|
||||||
while (($path = readdir($handle)) !== false) {
|
|
||||||
if ($path === '.git' || $path === '.svn' || $path === '.' || $path === '..') {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$fullPath = "$root/$path";
|
|
||||||
$relativePath = $basePath === '' ? $path : "$basePath/$path";
|
|
||||||
if (is_dir($fullPath)) {
|
|
||||||
$files = array_merge($files, getFileList($fullPath, $relativePath));
|
|
||||||
} else {
|
|
||||||
$files[] = $relativePath;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
closedir($handle);
|
|
||||||
return $files;
|
|
||||||
}
|
|
||||||
|
|
||||||
function copyFile($root, $source, $target, &$all, $params)
|
|
||||||
{
|
|
||||||
if (!is_file($root . '/' . $source)) {
|
|
||||||
echo " skip $target ($source not exist)\n";
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (is_file($root . '/' . $target)) {
|
|
||||||
if (file_get_contents($root . '/' . $source) === file_get_contents($root . '/' . $target)) {
|
|
||||||
echo " unchanged $target\n";
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if ($all) {
|
|
||||||
echo " overwrite $target\n";
|
|
||||||
} else {
|
|
||||||
echo " exist $target\n";
|
|
||||||
echo " ...overwrite? [Yes|No|All|Quit] ";
|
|
||||||
|
|
||||||
|
|
||||||
$answer = !empty($params['overwrite']) ? $params['overwrite'] : trim(fgets(STDIN));
|
|
||||||
if (!strncasecmp($answer, 'q', 1)) {
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
if (!strncasecmp($answer, 'y', 1)) {
|
|
||||||
echo " overwrite $target\n";
|
|
||||||
} else {
|
|
||||||
if (!strncasecmp($answer, 'a', 1)) {
|
|
||||||
echo " overwrite $target\n";
|
|
||||||
$all = true;
|
|
||||||
} else {
|
|
||||||
echo " skip $target\n";
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_put_contents($root . '/' . $target, file_get_contents($root . '/' . $source));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
echo " generate $target\n";
|
|
||||||
@mkdir(dirname($root . '/' . $target), 0777, true);
|
|
||||||
file_put_contents($root . '/' . $target, file_get_contents($root . '/' . $source));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getParams()
|
|
||||||
{
|
|
||||||
$rawParams = [];
|
|
||||||
if (isset($_SERVER['argv'])) {
|
|
||||||
$rawParams = $_SERVER['argv'];
|
|
||||||
array_shift($rawParams);
|
|
||||||
}
|
|
||||||
|
|
||||||
$params = [];
|
|
||||||
foreach ($rawParams as $param) {
|
|
||||||
if (preg_match('/^--(\w+)(=(.*))?$/', $param, $matches)) {
|
|
||||||
$name = $matches[1];
|
|
||||||
$params[$name] = isset($matches[3]) ? $matches[3] : true;
|
|
||||||
} else {
|
|
||||||
$params[] = $param;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $params;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setWritable($root, $paths)
|
|
||||||
{
|
|
||||||
foreach ($paths as $writable) {
|
|
||||||
echo " chmod 0777 $writable\n";
|
|
||||||
@chmod("$root/$writable", 0777);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function setExecutable($root, $paths)
|
|
||||||
{
|
|
||||||
foreach ($paths as $executable) {
|
|
||||||
echo " chmod 0755 $executable\n";
|
|
||||||
@chmod("$root/$executable", 0755);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function setCookieValidationKey($root, $paths)
|
|
||||||
{
|
|
||||||
foreach ($paths as $file) {
|
|
||||||
echo " generate cookie validation key in $file\n";
|
|
||||||
$file = $root . '/' . $file;
|
|
||||||
$length = 32;
|
|
||||||
$bytes = openssl_random_pseudo_bytes($length);
|
|
||||||
$key = strtr(substr(base64_encode($bytes), 0, $length), '+/=', '_-.');
|
|
||||||
$content = preg_replace('/(("|\')cookieValidationKey("|\')\s*=>\s*)(""|\'\')/', "\\1'$key'", file_get_contents($file));
|
|
||||||
file_put_contents($file, $content);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function createSymlink($root, $links) {
|
|
||||||
foreach ($links as $link => $target) {
|
|
||||||
echo " symlink " . $root . "/" . $target . " " . $root . "/" . $link . "\n";
|
|
||||||
//first removing folders to avoid errors if the folder already exists
|
|
||||||
@rmdir($root . "/" . $link);
|
|
||||||
@symlink($root . "/" . $target, $root . "/" . $link);
|
|
||||||
}
|
|
||||||
}
|
|
20
init.bat
20
init.bat
@ -1,20 +0,0 @@
|
|||||||
@echo off
|
|
||||||
|
|
||||||
rem -------------------------------------------------------------
|
|
||||||
rem Yii command line init script for Windows.
|
|
||||||
rem
|
|
||||||
rem @author Qiang Xue <qiang.xue@gmail.com>
|
|
||||||
rem @link http://www.yiiframework.com/
|
|
||||||
rem @copyright Copyright (c) 2008 Yii Software LLC
|
|
||||||
rem @license http://www.yiiframework.com/license/
|
|
||||||
rem -------------------------------------------------------------
|
|
||||||
|
|
||||||
@setlocal
|
|
||||||
|
|
||||||
set YII_PATH=%~dp0
|
|
||||||
|
|
||||||
if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe
|
|
||||||
|
|
||||||
"%PHP_COMMAND%" "%YII_PATH%init" %*
|
|
||||||
|
|
||||||
@endlocal
|
|
@ -1,24 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
use Codeception\Configuration;
|
||||||
|
use Codeception\Specify\Config;
|
||||||
|
|
||||||
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
||||||
defined('YII_ENV') or define('YII_ENV', 'test');
|
defined('YII_ENV') or define('YII_ENV', 'test');
|
||||||
|
|
||||||
defined('YII_APP_BASE_PATH') or define('YII_APP_BASE_PATH', dirname(dirname(dirname(__DIR__))));
|
defined('API_ENTRY_URL') or define('API_ENTRY_URL', parse_url(Configuration::config()['config']['test_entry_url'], PHP_URL_PATH));
|
||||||
|
defined('API_ENTRY_FILE') or define('API_ENTRY_FILE', __DIR__ . '/../../../api/web/index.php');
|
||||||
|
|
||||||
defined('API_ENTRY_URL') or define('API_ENTRY_URL', parse_url(\Codeception\Configuration::config()['config']['test_entry_url'], PHP_URL_PATH));
|
require_once __DIR__ . '/../../../vendor/autoload.php';
|
||||||
defined('API_ENTRY_FILE') or define('API_ENTRY_FILE', YII_APP_BASE_PATH . '/api/web/index-test.php');
|
require_once __DIR__ . '/../../../vendor/yiisoft/yii2/Yii.php';
|
||||||
|
require_once __DIR__ . '/../../../common/config/bootstrap.php';
|
||||||
require_once(YII_APP_BASE_PATH . '/vendor/autoload.php');
|
require_once __DIR__ . '/../../../api/config/bootstrap.php';
|
||||||
require_once(YII_APP_BASE_PATH . '/vendor/yiisoft/yii2/Yii.php');
|
|
||||||
require_once(YII_APP_BASE_PATH . '/common/config/bootstrap.php');
|
|
||||||
require_once(YII_APP_BASE_PATH . '/api/config/bootstrap.php');
|
|
||||||
|
|
||||||
// set correct script paths
|
// set correct script paths
|
||||||
|
|
||||||
// the entry script file path for functional tests
|
// the entry script file path for functional tests
|
||||||
$_SERVER['SCRIPT_FILENAME'] = API_ENTRY_FILE;
|
$_SERVER['SCRIPT_FILENAME'] = API_ENTRY_FILE;
|
||||||
$_SERVER['SCRIPT_NAME'] = API_ENTRY_URL;
|
$_SERVER['SCRIPT_NAME'] = API_ENTRY_URL;
|
||||||
$_SERVER['SERVER_NAME'] = parse_url(\Codeception\Configuration::config()['config']['test_entry_url'], PHP_URL_HOST);
|
$_SERVER['SERVER_NAME'] = parse_url(Configuration::config()['config']['test_entry_url'], PHP_URL_HOST);
|
||||||
$_SERVER['SERVER_PORT'] = parse_url(\Codeception\Configuration::config()['config']['test_entry_url'], PHP_URL_PORT) ?: '80';
|
$_SERVER['SERVER_PORT'] = parse_url(Configuration::config()['config']['test_entry_url'], PHP_URL_PORT) ?: '80';
|
||||||
|
|
||||||
Yii::setAlias('@tests', dirname(dirname(__DIR__)));
|
Yii::setAlias('@tests', dirname(dirname(__DIR__)));
|
||||||
\Codeception\Specify\Config::setDeepClone(false);
|
Config::setDeepClone(false);
|
||||||
|
@ -12,9 +12,7 @@ settings:
|
|||||||
memory_limit: 1024M
|
memory_limit: 1024M
|
||||||
log: true
|
log: true
|
||||||
config:
|
config:
|
||||||
# the entry script URL (with host info) for functional tests
|
test_entry_url: http://localhost/api/web/index.php
|
||||||
# PLEASE ADJUST IT TO THE ACTUAL ENTRY SCRIPT URL
|
|
||||||
test_entry_url: http://localhost:8080/api/web/index-test.php
|
|
||||||
coverage:
|
coverage:
|
||||||
enabled: true
|
enabled: true
|
||||||
remote: true
|
remote: true
|
||||||
@ -26,4 +24,4 @@ coverage:
|
|||||||
- ../../../api/mails/*
|
- ../../../api/mails/*
|
||||||
- ../../../api/web/*
|
- ../../../api/web/*
|
||||||
- ../../../api/runtime/*
|
- ../../../api/runtime/*
|
||||||
c3url: 'http://localhost:8080/api/web/index-test.php'
|
c3url: 'http://localhost/api/web/index.php'
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
|
new yii\web\Application(require __DIR__ . '/../../config/api/functional.php');
|
||||||
new yii\web\Application(require(dirname(dirname(__DIR__)) . '/config/api/functional.php'));
|
|
||||||
|
|
||||||
\Codeception\Util\Autoload::registerSuffix('Steps', __DIR__ . DIRECTORY_SEPARATOR);
|
\Codeception\Util\Autoload::registerSuffix('Steps', __DIR__ . DIRECTORY_SEPARATOR);
|
||||||
|
@ -3,6 +3,10 @@ namespace codeception\api\unit\models;
|
|||||||
|
|
||||||
use api\models\AccountIdentity;
|
use api\models\AccountIdentity;
|
||||||
use Codeception\Specify;
|
use Codeception\Specify;
|
||||||
|
use Emarref\Jwt\Claim;
|
||||||
|
use Emarref\Jwt\Encryption\Factory as EncryptionFactory;
|
||||||
|
use Emarref\Jwt\Jwt;
|
||||||
|
use Emarref\Jwt\Token;
|
||||||
use tests\codeception\api\unit\DbTestCase;
|
use tests\codeception\api\unit\DbTestCase;
|
||||||
use tests\codeception\common\_support\ProtectedCaller;
|
use tests\codeception\common\_support\ProtectedCaller;
|
||||||
use tests\codeception\common\fixtures\AccountFixture;
|
use tests\codeception\common\fixtures\AccountFixture;
|
||||||
@ -33,9 +37,13 @@ class AccountIdentityTest extends DbTestCase {
|
|||||||
* @expectedExceptionMessage Token expired
|
* @expectedExceptionMessage Token expired
|
||||||
*/
|
*/
|
||||||
public function testFindIdentityByAccessTokenWithExpiredToken() {
|
public function testFindIdentityByAccessTokenWithExpiredToken() {
|
||||||
$expiredToken = 'eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODA4MCIsImlzcyI6Imh0d' .
|
$token = new Token();
|
||||||
'HA6XC9cL2xvY2FsaG9zdDo4MDgwIiwiaWF0IjoxNDY0NTkzMTkzLCJleHAiOjE0NjQ1OTY3OTN9.DV' .
|
$token->addClaim(new Claim\Audience('http://localhost'));
|
||||||
'8uwh0OQhBYXkrNvxwJeO-kEjb9MQeLr3-6GoHM7RY';
|
$token->addClaim(new Claim\Issuer('http://localhost'));
|
||||||
|
$token->addClaim(new Claim\IssuedAt(1464593193));
|
||||||
|
$token->addClaim(new Claim\Expiration(1464596793));
|
||||||
|
$token->addClaim(new Claim\JwtId($this->accounts['admin']['id']));
|
||||||
|
$expiredToken = (new Jwt())->serialize($token, EncryptionFactory::create(Yii::$app->user->getAlgorithm()));
|
||||||
|
|
||||||
AccountIdentity::findIdentityByAccessToken($expiredToken);
|
AccountIdentity::findIdentityByAccessToken($expiredToken);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace tests\codeception\api\models\authentication;
|
namespace tests\codeception\api\models\authentication;
|
||||||
|
|
||||||
|
use api\components\ReCaptcha\Validator;
|
||||||
use api\models\authentication\RegistrationForm;
|
use api\models\authentication\RegistrationForm;
|
||||||
use Codeception\Specify;
|
use Codeception\Specify;
|
||||||
use common\models\Account;
|
use common\models\Account;
|
||||||
@ -25,6 +26,11 @@ class RegistrationFormTest extends DbTestCase {
|
|||||||
return 'testing_message.eml';
|
return 'testing_message.eml';
|
||||||
};
|
};
|
||||||
$this->mockRequest();
|
$this->mockRequest();
|
||||||
|
Yii::$container->set(Validator::class, new class extends Validator {
|
||||||
|
public function validateValue($value) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown() {
|
protected function tearDown() {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace tests\codeception\api\models\authentication;
|
namespace tests\codeception\api\models\authentication;
|
||||||
|
|
||||||
|
use api\components\ReCaptcha\Validator;
|
||||||
use api\models\authentication\RepeatAccountActivationForm;
|
use api\models\authentication\RepeatAccountActivationForm;
|
||||||
use Codeception\Specify;
|
use Codeception\Specify;
|
||||||
use common\models\EmailActivation;
|
use common\models\EmailActivation;
|
||||||
@ -23,6 +24,11 @@ class RepeatAccountActivationFormTest extends DbTestCase {
|
|||||||
$mailer->fileTransportCallback = function () {
|
$mailer->fileTransportCallback = function () {
|
||||||
return 'testing_message.eml';
|
return 'testing_message.eml';
|
||||||
};
|
};
|
||||||
|
Yii::$container->set(Validator::class, new class extends Validator {
|
||||||
|
public function validateValue($value) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown() {
|
protected function tearDown() {
|
||||||
|
@ -24,6 +24,9 @@ class RateLimiterTest extends TestCase {
|
|||||||
|
|
||||||
/** @var RateLimiter|\PHPUnit_Framework_MockObject_MockObject $filter */
|
/** @var RateLimiter|\PHPUnit_Framework_MockObject_MockObject $filter */
|
||||||
$filter = $this->getMockBuilder(RateLimiter::class)
|
$filter = $this->getMockBuilder(RateLimiter::class)
|
||||||
|
->setConstructorArgs([[
|
||||||
|
'authserverDomain' => Yii::$app->params['authserverHost']
|
||||||
|
]])
|
||||||
->setMethods(['getServer'])
|
->setMethods(['getServer'])
|
||||||
->getMock();
|
->getMock();
|
||||||
|
|
||||||
@ -54,7 +57,9 @@ class RateLimiterTest extends TestCase {
|
|||||||
->method('getHostInfo')
|
->method('getHostInfo')
|
||||||
->will($this->returnValue('http://authserver.ely.by'));
|
->will($this->returnValue('http://authserver.ely.by'));
|
||||||
|
|
||||||
$filter = new RateLimiter();
|
$filter = new RateLimiter([
|
||||||
|
'authserverDomain' => Yii::$app->params['authserverHost']
|
||||||
|
]);
|
||||||
$filter->checkRateLimit(null, $request, null, null);
|
$filter->checkRateLimit(null, $request, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,6 +91,7 @@ class RateLimiterTest extends TestCase {
|
|||||||
$filter = $this->getMockBuilder(RateLimiter::class)
|
$filter = $this->getMockBuilder(RateLimiter::class)
|
||||||
->setConstructorArgs([[
|
->setConstructorArgs([[
|
||||||
'limit' => 3,
|
'limit' => 3,
|
||||||
|
'authserverDomain' => Yii::$app->params['authserverHost'],
|
||||||
]])
|
]])
|
||||||
->setMethods(['getServer'])
|
->setMethods(['getServer'])
|
||||||
->getMock();
|
->getMock();
|
||||||
|
@ -1,19 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Yii console bootstrap file.
|
|
||||||
*
|
|
||||||
* @link http://www.yiiframework.com/
|
|
||||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
||||||
* @license http://www.yiiframework.com/license/
|
|
||||||
*/
|
|
||||||
|
|
||||||
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
||||||
defined('YII_ENV') or define('YII_ENV', 'test');
|
defined('YII_ENV') or define('YII_ENV', 'test');
|
||||||
|
|
||||||
defined('YII_APP_BASE_PATH') or define('YII_APP_BASE_PATH', dirname(dirname(dirname(__DIR__))));
|
require_once __DIR__ . '/../../../vendor/autoload.php';
|
||||||
|
require_once __DIR__ . '/../../../vendor/yiisoft/yii2/Yii.php';
|
||||||
require_once(YII_APP_BASE_PATH . '/vendor/autoload.php');
|
require_once __DIR__ . '/../../../common/config/bootstrap.php';
|
||||||
require_once(YII_APP_BASE_PATH . '/vendor/yiisoft/yii2/Yii.php');
|
|
||||||
require_once(YII_APP_BASE_PATH . '/common/config/bootstrap.php');
|
|
||||||
|
|
||||||
Yii::setAlias('@tests', dirname(dirname(__DIR__)));
|
Yii::setAlias('@tests', dirname(dirname(__DIR__)));
|
||||||
|
@ -1,21 +1,10 @@
|
|||||||
#!/usr/bin/env php
|
#!/usr/bin/env php
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Yii console bootstrap file.
|
|
||||||
*
|
|
||||||
* @link http://www.yiiframework.com/
|
|
||||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
||||||
* @license http://www.yiiframework.com/license/
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once __DIR__ . '/_bootstrap.php';
|
require_once __DIR__ . '/_bootstrap.php';
|
||||||
|
|
||||||
$config = yii\helpers\ArrayHelper::merge(
|
$config = yii\helpers\ArrayHelper::merge(
|
||||||
require(YII_APP_BASE_PATH . '/common/config/main.php'),
|
\common\config\ConfigLoader::load('console'),
|
||||||
require(YII_APP_BASE_PATH . '/common/config/main-local.php'),
|
require(__DIR__ . '/../config/config.php')
|
||||||
require(YII_APP_BASE_PATH . '/console/config/main.php'),
|
|
||||||
require(YII_APP_BASE_PATH . '/console/config/main-local.php'),
|
|
||||||
require(dirname(__DIR__) . '/config/config.php')
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$application = new yii\console\Application($config);
|
$application = new yii\console\Application($config);
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
@echo off
|
|
||||||
|
|
||||||
rem -------------------------------------------------------------
|
|
||||||
rem Yii command line bootstrap script for Windows.
|
|
||||||
rem
|
|
||||||
rem @author Qiang Xue <qiang.xue@gmail.com>
|
|
||||||
rem @link http://www.yiiframework.com/
|
|
||||||
rem @copyright Copyright (c) 2008 Yii Software LLC
|
|
||||||
rem @license http://www.yiiframework.com/license/
|
|
||||||
rem -------------------------------------------------------------
|
|
||||||
|
|
||||||
@setlocal
|
|
||||||
|
|
||||||
set YII_PATH=%~dp0
|
|
||||||
|
|
||||||
if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe
|
|
||||||
|
|
||||||
"%PHP_COMMAND%" "%YII_PATH%yii" %*
|
|
||||||
|
|
||||||
@endlocal
|
|
@ -2,11 +2,9 @@
|
|||||||
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
||||||
defined('YII_ENV') or define('YII_ENV', 'test');
|
defined('YII_ENV') or define('YII_ENV', 'test');
|
||||||
|
|
||||||
defined('YII_APP_BASE_PATH') or define('YII_APP_BASE_PATH', dirname(dirname(dirname(__DIR__))));
|
require_once __DIR__ . '/../../../vendor/autoload.php';
|
||||||
|
require_once __DIR__ . '/../../../vendor/yiisoft/yii2/Yii.php';
|
||||||
require_once(YII_APP_BASE_PATH . '/vendor/autoload.php');
|
require_once __DIR__ . '/../../../common/config/bootstrap.php';
|
||||||
require_once(YII_APP_BASE_PATH . '/vendor/yiisoft/yii2/Yii.php');
|
|
||||||
require_once(YII_APP_BASE_PATH . '/common/config/bootstrap.php');
|
|
||||||
|
|
||||||
// set correct script paths
|
// set correct script paths
|
||||||
$_SERVER['SERVER_NAME'] = 'localhost';
|
$_SERVER['SERVER_NAME'] = 'localhost';
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
namespace tests\codeception\common\_support;
|
namespace tests\codeception\common\_support;
|
||||||
|
|
||||||
use Codeception\Module;
|
use Codeception\Module;
|
||||||
use Codeception\TestCase;
|
use Codeception\TestInterface;
|
||||||
use tests\codeception\common\fixtures\AccountFixture;
|
use tests\codeception\common\fixtures\AccountFixture;
|
||||||
use tests\codeception\common\fixtures\AccountSessionFixture;
|
use tests\codeception\common\fixtures\AccountSessionFixture;
|
||||||
use tests\codeception\common\fixtures\EmailActivationFixture;
|
use tests\codeception\common\fixtures\EmailActivationFixture;
|
||||||
@ -32,17 +32,17 @@ class FixtureHelper extends Module {
|
|||||||
getFixture as protected;
|
getFixture as protected;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function _before(TestCase $test) {
|
public function _before(TestInterface $test) {
|
||||||
$this->loadFixtures();
|
$this->loadFixtures();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function _after(TestCase $test) {
|
public function _after(TestInterface $test) {
|
||||||
$this->unloadFixtures();
|
$this->unloadFixtures();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function globalFixtures() {
|
public function globalFixtures() {
|
||||||
return [
|
return [
|
||||||
InitDbFixture::className(),
|
InitDbFixture::class,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ namespace codeception\common\unit\behaviors;
|
|||||||
|
|
||||||
use Codeception\Specify;
|
use Codeception\Specify;
|
||||||
use common\behaviors\PrimaryKeyValueBehavior;
|
use common\behaviors\PrimaryKeyValueBehavior;
|
||||||
use tests\codeception\api\unit\TestCase;
|
use tests\codeception\common\unit\TestCase;
|
||||||
use yii\db\ActiveRecord;
|
use yii\db\ActiveRecord;
|
||||||
|
|
||||||
class PrimaryKeyValueBehaviorTest extends TestCase {
|
class PrimaryKeyValueBehaviorTest extends TestCase {
|
||||||
|
@ -6,7 +6,7 @@ use common\models\confirmations\ForgotPassword;
|
|||||||
use common\models\confirmations\RegistrationConfirmation;
|
use common\models\confirmations\RegistrationConfirmation;
|
||||||
use common\models\EmailActivation;
|
use common\models\EmailActivation;
|
||||||
use tests\codeception\common\fixtures\EmailActivationFixture;
|
use tests\codeception\common\fixtures\EmailActivationFixture;
|
||||||
use tests\codeception\console\unit\DbTestCase;
|
use tests\codeception\common\unit\DbTestCase;
|
||||||
|
|
||||||
class EmailActivationTest extends DbTestCase {
|
class EmailActivationTest extends DbTestCase {
|
||||||
use Specify;
|
use Specify;
|
||||||
|
@ -9,7 +9,12 @@ return [
|
|||||||
'secret' => 'private-key',
|
'secret' => 'private-key',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
'modules' => [
|
||||||
|
'authserver' => [
|
||||||
|
'baseDomain' => 'http://localhost',
|
||||||
|
],
|
||||||
|
],
|
||||||
'params' => [
|
'params' => [
|
||||||
'authserverDomain' => 'http://authserver.ely.by',
|
'authserverHost' => 'authserver.ely.by',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
@ -2,16 +2,9 @@
|
|||||||
$_SERVER['SCRIPT_FILENAME'] = API_ENTRY_FILE;
|
$_SERVER['SCRIPT_FILENAME'] = API_ENTRY_FILE;
|
||||||
$_SERVER['SCRIPT_NAME'] = API_ENTRY_URL;
|
$_SERVER['SCRIPT_NAME'] = API_ENTRY_URL;
|
||||||
|
|
||||||
/**
|
|
||||||
* Application configuration for api functional tests
|
|
||||||
*/
|
|
||||||
return yii\helpers\ArrayHelper::merge(
|
return yii\helpers\ArrayHelper::merge(
|
||||||
require(YII_APP_BASE_PATH . '/common/config/main.php'),
|
\common\config\ConfigLoader::load('api'),
|
||||||
require(YII_APP_BASE_PATH . '/common/config/main-local.php'), require(YII_APP_BASE_PATH . '/api/config/main.php'),
|
require __DIR__ . '/../config.php',
|
||||||
require(YII_APP_BASE_PATH . '/api/config/main-local.php'),
|
require __DIR__ . '/../functional.php',
|
||||||
require(dirname(__DIR__) . '/config.php'),
|
require __DIR__ . '/config.php'
|
||||||
require(dirname(__DIR__) . '/functional.php'),
|
|
||||||
require(__DIR__ . '/config.php'),
|
|
||||||
[
|
|
||||||
]
|
|
||||||
);
|
);
|
||||||
|
@ -1,15 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
|
||||||
* Application configuration for api unit tests
|
|
||||||
*/
|
|
||||||
return yii\helpers\ArrayHelper::merge(
|
return yii\helpers\ArrayHelper::merge(
|
||||||
require(YII_APP_BASE_PATH . '/common/config/main.php'),
|
\common\config\ConfigLoader::load('api'),
|
||||||
require(YII_APP_BASE_PATH . '/common/config/main-local.php'), require(YII_APP_BASE_PATH . '/api/config/main.php'),
|
require __DIR__ . '/../config.php',
|
||||||
require(YII_APP_BASE_PATH . '/api/config/main-local.php'),
|
require __DIR__ . '/../unit.php',
|
||||||
require(dirname(__DIR__) . '/config.php'),
|
require __DIR__ . '/config.php'
|
||||||
require(dirname(__DIR__) . '/unit.php'),
|
|
||||||
require(__DIR__ . '/config.php'),
|
|
||||||
[
|
|
||||||
]
|
|
||||||
);
|
);
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Application config for common unit tests
|
|
||||||
*/
|
|
||||||
return yii\helpers\ArrayHelper::merge(
|
return yii\helpers\ArrayHelper::merge(
|
||||||
require(YII_APP_BASE_PATH . '/common/config/main.php'),
|
\common\config\ConfigLoader::load('common'),
|
||||||
require(YII_APP_BASE_PATH . '/common/config/main-local.php'),
|
require __DIR__ . '/../config.php',
|
||||||
require(dirname(__DIR__) . '/config.php'),
|
require __DIR__ . '/../unit.php',
|
||||||
require(dirname(__DIR__) . '/unit.php'),
|
|
||||||
[
|
[
|
||||||
'id' => 'app-common',
|
'id' => 'app-common',
|
||||||
'basePath' => dirname(__DIR__),
|
'basePath' => dirname(__DIR__),
|
||||||
|
@ -3,7 +3,7 @@ return [
|
|||||||
'language' => 'en-US',
|
'language' => 'en-US',
|
||||||
'controllerMap' => [
|
'controllerMap' => [
|
||||||
'fixture' => [
|
'fixture' => [
|
||||||
'class' => 'yii\faker\FixtureController',
|
'class' => yii\faker\FixtureController::class,
|
||||||
'fixtureDataPath' => '@tests/codeception/common/fixtures/data',
|
'fixtureDataPath' => '@tests/codeception/common/fixtures/data',
|
||||||
'templatePath' => '@tests/codeception/common/templates/fixtures',
|
'templatePath' => '@tests/codeception/common/templates/fixtures',
|
||||||
'namespace' => 'tests\codeception\common\fixtures',
|
'namespace' => 'tests\codeception\common\fixtures',
|
||||||
|
@ -1,14 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Application configuration for console unit tests
|
|
||||||
*/
|
|
||||||
return yii\helpers\ArrayHelper::merge(
|
return yii\helpers\ArrayHelper::merge(
|
||||||
require(YII_APP_BASE_PATH . '/common/config/main.php'),
|
\common\config\ConfigLoader::load('console'),
|
||||||
require(YII_APP_BASE_PATH . '/common/config/main-local.php'),
|
require __DIR__ . '/../config.php',
|
||||||
require(YII_APP_BASE_PATH . '/console/config/main.php'),
|
require __DIR__ . '/../unit.php'
|
||||||
require(YII_APP_BASE_PATH . '/console/config/main-local.php'),
|
|
||||||
require(dirname(__DIR__) . '/config.php'),
|
|
||||||
require(dirname(__DIR__) . '/unit.php'),
|
|
||||||
[
|
|
||||||
]
|
|
||||||
);
|
);
|
||||||
|
@ -1,18 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Application configuration shared by all applications functional tests
|
|
||||||
*/
|
|
||||||
return [
|
return [
|
||||||
'components' => [
|
'components' => [
|
||||||
'request' => [
|
'request' => [
|
||||||
// it's not recommended to run functional tests with CSRF validation enabled
|
// it's not recommended to run functional tests with CSRF validation enabled
|
||||||
|
// TODO: у нас вроде и без того нет проверки csrf
|
||||||
'enableCsrfValidation' => false,
|
'enableCsrfValidation' => false,
|
||||||
|
'enableCookieValidation' => false,
|
||||||
// but if you absolutely need it set cookie domain to localhost
|
// but if you absolutely need it set cookie domain to localhost
|
||||||
/*
|
|
||||||
'csrfCookie' => [
|
|
||||||
'domain' => 'localhost',
|
|
||||||
],
|
|
||||||
*/
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
@ -1,7 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Application configuration shared by all applications unit tests
|
|
||||||
*/
|
|
||||||
return [
|
return [
|
||||||
|
|
||||||
];
|
];
|
@ -2,12 +2,10 @@
|
|||||||
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
defined('YII_DEBUG') or define('YII_DEBUG', true);
|
||||||
defined('YII_ENV') or define('YII_ENV', 'test');
|
defined('YII_ENV') or define('YII_ENV', 'test');
|
||||||
|
|
||||||
defined('YII_APP_BASE_PATH') or define('YII_APP_BASE_PATH', dirname(dirname(dirname(__DIR__))));
|
require_once __DIR__ . '/../../../vendor/autoload.php';
|
||||||
|
require_once __DIR__ . '/../../../vendor/yiisoft/yii2/Yii.php';
|
||||||
require_once(YII_APP_BASE_PATH . '/vendor/autoload.php');
|
require_once __DIR__ . '/../../../common/config/bootstrap.php';
|
||||||
require_once(YII_APP_BASE_PATH . '/vendor/yiisoft/yii2/Yii.php');
|
require_once __DIR__ . '/../../../console/config/bootstrap.php';
|
||||||
require_once(YII_APP_BASE_PATH . '/common/config/bootstrap.php');
|
|
||||||
require_once(YII_APP_BASE_PATH . '/console/config/bootstrap.php');
|
|
||||||
|
|
||||||
// set correct script paths
|
// set correct script paths
|
||||||
$_SERVER['SERVER_NAME'] = 'localhost';
|
$_SERVER['SERVER_NAME'] = 'localhost';
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
version: '2'
|
version: '2'
|
||||||
services:
|
services:
|
||||||
testphp:
|
testphp:
|
||||||
build: ./..
|
extends:
|
||||||
links:
|
file: ../docker-compose.dev.yml
|
||||||
- testdb
|
service: app
|
||||||
- testredis
|
|
||||||
- testrabbit
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./../:/var/www/html/
|
- ./../:/var/www/html/
|
||||||
env_file: ./../.env
|
env_file: ./../.env
|
||||||
|
|
||||||
testdb:
|
testdb:
|
||||||
build: ./../docker/mariadb
|
extends:
|
||||||
|
file: ../docker-compose.dev.yml
|
||||||
|
service: db
|
||||||
environment:
|
environment:
|
||||||
MYSQL_ROOT_PASSWORD: ""
|
MYSQL_ROOT_PASSWORD: ""
|
||||||
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
||||||
@ -20,10 +20,14 @@ services:
|
|||||||
MYSQL_PASSWORD: "ely_accounts_tester_password"
|
MYSQL_PASSWORD: "ely_accounts_tester_password"
|
||||||
|
|
||||||
testredis:
|
testredis:
|
||||||
image: redis:3.0
|
extends:
|
||||||
|
file: ../docker-compose.dev.yml
|
||||||
|
service: redis
|
||||||
|
|
||||||
testrabbit:
|
testrabbit:
|
||||||
build: ./../docker/rabbitmq
|
extends:
|
||||||
|
file: ../docker-compose.dev.yml
|
||||||
|
service: rabbitmq
|
||||||
environment:
|
environment:
|
||||||
RABBITMQ_DEFAULT_USER: "ely-accounts-tester"
|
RABBITMQ_DEFAULT_USER: "ely-accounts-tester"
|
||||||
RABBITMQ_DEFAULT_PASS: "tester-password"
|
RABBITMQ_DEFAULT_PASS: "tester-password"
|
||||||
|
16
yii
Executable file
16
yii
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
require(__DIR__ . '/vendor/autoload.php');
|
||||||
|
|
||||||
|
defined('YII_DEBUG') or define('YII_DEBUG', (boolean)getenv('YII_DEBUG'));
|
||||||
|
defined('YII_ENV') or define('YII_ENV', getenv('YII_ENV'));
|
||||||
|
|
||||||
|
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
|
||||||
|
require(__DIR__ . '/common/config/bootstrap.php');
|
||||||
|
require(__DIR__ . '/console/config/bootstrap.php');
|
||||||
|
|
||||||
|
$config = \common\config\ConfigLoader::load('console');
|
||||||
|
|
||||||
|
$application = new yii\console\Application($config);
|
||||||
|
$exitCode = $application->run();
|
||||||
|
exit($exitCode);
|
20
yii.bat
20
yii.bat
@ -1,20 +0,0 @@
|
|||||||
@echo off
|
|
||||||
|
|
||||||
rem -------------------------------------------------------------
|
|
||||||
rem Yii command line bootstrap script for Windows.
|
|
||||||
rem
|
|
||||||
rem @author Qiang Xue <qiang.xue@gmail.com>
|
|
||||||
rem @link http://www.yiiframework.com/
|
|
||||||
rem @copyright Copyright (c) 2008 Yii Software LLC
|
|
||||||
rem @license http://www.yiiframework.com/license/
|
|
||||||
rem -------------------------------------------------------------
|
|
||||||
|
|
||||||
@setlocal
|
|
||||||
|
|
||||||
set YII_PATH=%~dp0
|
|
||||||
|
|
||||||
if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe
|
|
||||||
|
|
||||||
"%PHP_COMMAND%" "%YII_PATH%yii" %*
|
|
||||||
|
|
||||||
@endlocal
|
|
Loading…
Reference in New Issue
Block a user