Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .env.dist
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,19 @@ APP_ENV=dev
APP_SECRET=
###< symfony/framework-bundle ###

###> symfony/lock ###
# Choose one of the stores below
# postgresql+advisory://db_user:db_password@localhost/db_name
LOCK_DSN=flock
###< symfony/lock ###

###> nelmio/cors-bundle ###
CORS_ALLOW_ORIGIN=*
###< nelmio/cors-bundle ###

# Doctrine
DATABASE_URL="mysql://:@:3306/"
REDIS_URL="redis://redis:6379"

# Docker
MYSQL_ROOT_PASSWORD=
Expand Down
134 changes: 134 additions & 0 deletions .github/workflows/branch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
name: Symfony deployment

on:
push:
branches: [ "alpha" ]
# branches: [ "feature/upgrade_symfony" ]
pull_request:
branches: [ "alpha" ]
# branches: [ "feature/upgrade_symfony" ]

permissions:
contents: read

jobs:
validate:
name: Symfony (PHP ${{ matrix.php-versions }})
runs-on: ubuntu-latest

# Docs: https://docs.github.com/en/actions/using-containerized-services
services:
mysql:
image: mysql:9.3
env:
MYSQL_ALLOW_EMPTY_PASSWORD: false
MYSQL_ROOT_PASSWORD: symfony
MYSQL_DATABASE: symfony
ports:
- 3306/tcp
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
strategy:
fail-fast: false
matrix:
php-versions: ['8.4']
steps:
- name: Checkout
uses: actions/checkout@v4

# Docs: https://github.com/shivammathur/setup-php
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
tools: phpunit-bridge
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, mysql
coverage: xdebug

# Local MySQL service in GitHub hosted environments is disabled by default.
# If you are using it instead of service containers, make sure you start it.
# - name: Start mysql service
# run: sudo systemctl start mysql.service

- name: Copy .env.dist
run: php -r "file_exists('.env.local') || copy('.env.dist', '.env.local');"
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
# Use composer.json for key, if composer.lock is not committed.
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install Composer dependencies
if: steps.composer-cache.outputs.cache-hit != 'true'
run: composer install --no-progress --prefer-dist --optimize-autoloader
env:
DATABASE_URL: mysql://root:symfony@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/symfony
- name: Run Migration
run: |
composer require --dev symfony/orm-pack
php bin/console doctrine:schema:update --complete --force || echo "No migrations found or schema update failed"
php bin/console doctrine:migrations:migrate || echo "No migrations found or migration failed"
env:
DATABASE_URL: mysql://root:symfony@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/symfony
- name: Install PHPUnit
run: composer require --dev phpunit/phpunit && vendor/bin/phpunit --coverage-text
env:
DATABASE_URL: mysql://root:symfony@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/symfony
deploy:
name: Deploy image
runs-on: ubuntu-latest
needs: validate
steps:
- uses: actions/checkout@v4
- name: Login to registry
uses: docker/login-action@v3
with:
registry: ${{ secrets.DOCKER_REGISTRY }}
username: ${{ secrets.DOCKER_LOGIN }}
password: ${{ secrets.DOCKER_PASSWD }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ secrets.DOCKER_REGISTRY }}/api-php:${{ github.ref_name }}
- name: Configure SSH
run: |
mkdir -p ~/.ssh/
echo "$SSH_KEY" > ~/.ssh/staging.key
chmod 600 ~/.ssh/staging.key
cat >>~/.ssh/config <<END
Host staging
HostName $SSH_HOST
User $SSH_USER
Port $SSH_PORT
IdentityFile ~/.ssh/staging.key
StrictHostKeyChecking no
END
env:
SSH_USER: ${{ secrets.SSH_USER }}
SSH_KEY: ${{ secrets.SSH_KEY }}
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_PORT: ${{ secrets.SSH_PORT }}
DOMAIN_URL: ${{ secrets.DOMAIN_URL }}
- name: Update alpha environment & run migrations
run: |
if [[ "$DOCKER_BRANCH" == "master" ]]; then
export HOSTNAME="api.$DOMAIN_URL"
elif [[ "$DOCKER_BRANCH" == "preprod" ]]; then
export HOSTNAME="api.$DOCKER_BRANCH.$DOMAIN_URL"
else
export HOSTNAME="api.$DOCKER_BRANCH.$DOMAIN_URL"
fi
ssh staging 'export DOCKER_BRANCH=${{ github.ref_name }} DOCKER_REGISTRY=${{ secrets.DOCKER_REGISTRY }}
cd /var/docker/api/${DOCKER_BRANCH}
git pull origin ${{ github.ref_name }}
docker compose --file docker-compose-branch.yml pull
docker login -u ${{ secrets.DOCKER_LOGIN }} -p ${{ secrets.DOCKER_PASSWD }} ${{ secrets.DOCKER_REGISTRY }}
docker compose --project-name ${{ github.ref_name }}-api_php --file docker-compose-branch.yml up -d
docker compose --file docker-compose-branch.yml exec symfony php bin/console doctrine:migrations:migrate --no-interaction'
# Ajout de l'exécution des migrations Doctrine sur le VPS
8 changes: 3 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
#FROM sigri44/docker-symfony-php7:latest
#FROM sigri44/docker-symfony-php8:latest
FROM registry.realtoken.community/docker-symfony-php:8
FROM registry.realtoken.community/docker-symfony-php:8.4

# Composer
WORKDIR /var/www/html
Expand All @@ -9,11 +7,11 @@ RUN cp .env.dev .env
RUN composer install --prefer-dist --no-interaction --optimize-autoloader --no-progress

# HTTPS
ENV HTTPS false
ENV HTTPS=false

# Nginx
COPY docker/nginx.conf /etc/nginx/nginx.conf
COPY docker/blockips.conf /etc/nginx/blockips.conf
#COPY docker/blockips.conf /etc/nginx/blockips.conf

RUN mkdir -p var/cache/prod
RUN chmod -R 777 var/cache/prod
Expand Down
46 changes: 46 additions & 0 deletions LOCAL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Build en local

```bash
docker compose -f docker-compose.local.yml up -d --force-recreate --build

Goto: http://localhost:9080/

# Install dB
docker exec -it api-sf php bin/console doctrine:schema:create
#docker exec -it api-sf php bin/console doctrine:schema:update --force

# Install migrations
docker exec -it api-sf php bin/console doctrine:migrations:migrate


# Try Redis cache load
wrk -t4 -c50 -d30s http://localhost:9080/api/tokens

# Upgrade Symfony version
docker exec -it api-sf php bin/console debug:container --deprecations
```
## Debug

```bash
## Get
composer why symfony/PACKAGE_NAME
```

### Tmp fix pour upgrade dB 5.3 -> 7.3 en Prod

```sql
ALTER TABLE tokenlist_integrity
MODIFY COLUMN data LONGTEXT;

ALTER TABLE tokens
MODIFY COLUMN coordinate LONGTEXT,
MODIFY COLUMN image_link LONGTEXT,
MODIFY COLUMN secondary_marketplace LONGTEXT,
MODIFY COLUMN blockchain_addresses LONGTEXT,
MODIFY COLUMN secondary_marketplaces LONGTEXT,
MODIFY COLUMN origin_secondary_marketplaces LONGTEXT;
```

```bash
docker exec -it api-sf php temp_upgrade_sql.php
```
17 changes: 6 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,23 @@
# RealT-API
RealT-Community API for RealTokens
# RealToken-API
RealToken-Community API for RealToken ecosystem.

## Installation
Build Container :
```bash
sudo docker-compose build
```

Run API Stack :
```bash
sudo docker-compose up -d
docker compose up -d
```

Create Database :
```
sudo docker-compose exec -T symfony php bin/console doctrine:database:create
docker exec -it symfony php bin/console doctrine:database:create
```

Create Table :
```
sudo docker-compose exec -T symfony php bin/console doctrine:schema:update --force
docker exec -it symfony php bin/console doctrine:schema:create
```

Migrate :
```
sudo docker-compose exec -T symfony php bin/console doctrine:migrations:migrate
docker exec -it symfony php bin/console doctrine:migrations:migrate
```
60 changes: 30 additions & 30 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,44 +1,44 @@
{
"name": "realtcommunity/realtapi",
"description": "RealT API Community",
"name": "realtoken-community/realtoken-api",
"description": "RealToken API Community",
"type": "project",
"license": "proprietary",
"require": {
"php": "^7.4 || ^8.0",
"php": "^8.4",
"ext-ctype": "*",
"ext-curl": "*",
"ext-dom": "*",
"ext-iconv": "*",
"ext-json": "*",
"composer/package-versions-deprecated": "1.10.99.1",
"doctrine/doctrine-bundle": "^2.1",
"doctrine/doctrine-migrations-bundle": "^2.2",
"doctrine/orm": "^2.7",
"jms/serializer-bundle": "^3.5",
"composer/package-versions-deprecated": "1.11.99.5",
"doctrine/annotations": "^2.0",
"doctrine/doctrine-bundle": "^2.16",
"doctrine/doctrine-migrations-bundle": "^3.4",
"doctrine/orm": "^3.5",
"jms/serializer-bundle": "^5.5",
"lukascivil/treewalker": "dev-master",
"nelmio/api-doc-bundle": "^4.0",
"nelmio/cors-bundle": "^2.1",
"sensio/framework-extra-bundle": "^5.5",
"sentry/sentry-symfony": "^4.2",
"symfony/asset": "5.2.*",
"symfony/cache-contracts": "^2.4",
"symfony/console": "5.2.*",
"symfony/dotenv": "5.2.*",
"symfony/flex": "^1.3.1",
"symfony/form": "5.2.*",
"symfony/framework-bundle": "5.2.*",
"symfony/rate-limiter": "5.2.*",
"symfony/security-bundle": "5.2.*",
"symfony/twig-bundle": "^5.2",
"symfony/validator": "5.2.*",
"symfony/yaml": "5.2.*"
"nelmio/api-doc-bundle": "^5.6",
"nelmio/cors-bundle": "^2.5",
"sentry/sentry-symfony": "^5.3",
"symfony/asset": "7.3.*",
"symfony/cache-contracts": "^3.6",
"symfony/console": "7.3.*",
"symfony/dotenv": "7.3.*",
"symfony/flex": "^2.8.2",
"symfony/form": "7.3.*",
"symfony/framework-bundle": "7.3.*",
"symfony/lock": "7.3.*",
"symfony/rate-limiter": "7.3.*",
"symfony/security-bundle": "7.3.*",
"symfony/twig-bundle": "^7.3",
"symfony/validator": "7.3.*",
"symfony/yaml": "7.3.*"
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^3.3",
"phpstan/phpstan": "^0.12.96",
"symfony/maker-bundle": "^1.21",
"symfony/stopwatch": "^5.2",
"symfony/web-profiler-bundle": "^5.2"
"phpstan/phpstan": "^2.1.22",
"symfony/maker-bundle": "^1.64",
"symfony/stopwatch": "^7.3",
"symfony/web-profiler-bundle": "^7.3"
},
"config": {
"preferred-install": {
Expand Down Expand Up @@ -81,7 +81,7 @@
"extra": {
"symfony": {
"allow-contrib": false,
"require": "5.2.*"
"require": "7.3.*"
}
}
}
Loading
Loading