Skip to content

platformsh-templates/bigfoot-multiapp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Deploy a multi-app project with Bigfoot website, API Platform admin (ReactJS), Gatsby website and Mercure.rocks server on Platform.sh

Contribute, request a feature, or check out our resources

Join our community       Documentation       Blog       Report a bug       Request a feature

Open issues    Open PRs   

Deploy on Platform.sh


Contents

About       Getting started       Migrate       Learn       Contribute      


About

We have just created a new multi-app project for you, based on Bigfoot Project, API Platform Admin, Gatsby and Mercure.rocks server.
The generated code has been setup for a typical web multi-application project hosted on Platform.sh.

Features

  • PHP 8.2
  • PostgreSQL v14
  • Composer-based build
  • Yarn v1.22.15
  • NodeJS v16
  • Mercure server v0.14.4

Getting started

Quickstart

The quickest way to deploy this template on Platform.sh is by clicking the button below.
This will automatically create a new project and initialize the repository for you.

Deploy on Platform.sh

Note:

Platform.sh templates prioritize upstream release versions over our own. Despite this, we update template dependencies on a scheduled basis independent of those upstreams.
Because of this, template repos do not contain releases. This may change in the future, but until then the -s dev flag is necessary to use composer create-project.

Local development

This section provides instructions for running the Bigfoot Multi-app template locally, connected to a local database instance.

In all cases for developing with Platform.sh, it's important to develop on an isolated environment - do not connect to data on your production environment when developing locally.

Each of the options below assume that you have already deployed this template to Platform.sh, as well as the following starting commands:

  1. Install the Symfony CLI

    Follow the instructions to install the Symfony CLI for your operating system. You can verify the installation by logging in (symfony login) and listing your projects (symfony project:list).

  2. Find your PROJECT_ID by running the command symfony project:list

    +---------------+------------------------------------+------------------+---------------------------------+
    | ID            | Title                              | Region           | Organization                    |
    +---------------+------------------------------------+------------------+---------------------------------+
    | PROJECT_ID    | Your Project Name                  | xx-3.platform.sh | your-username                   |
    +---------------+------------------------------------+------------------+---------------------------------+
  3. Get your Platform.sh project

    symfony get PROJECT_ID
    cd <PROJECT_FOLDER>
    

    or clone this repo if you don't have any existing project

    git clone -b multiapp-finished git@github.com:platformsh-templates/bigfoot-workshop-with-api.git bigfoot-multiapp-finished
    cd bigfoot-multiapp-finished
    
    
  4. Start the API component:

    1. cd ./api

    2. Install Symfony CLI

    3. Start docker container for the database : docker-compose up -d

    4. symfony composer install

    5. check that your api/.env file contains a valid DATABASE_URL to let Symfony connect to your database

      DATABASE_HOST=127.0.0.1
      DATABASE_PORT=52947
      DATABASE_NAME=app
      DATABASE_USER=symfony
      DATABASE_PASSWORD=ChangeMe
      DATABASE_URL="postgresql://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}?serverVersion=14&charset=utf8"
      
    6. symfony console doctrine:schema:create --dump-sql (use --force if there any SQL requests displayed)

    7. symfony server:start -d

    8. yarn install && yarn encore dev

    9. symfony open:local or you can go on https://localhost:8000/api

    Note: if symfony server does not start your app using default port 8000, please change REACT_APP_PUBLIC_URL from ./admin/.env file to reflect new port in use

  5. Start Gatsby app in a new terminal tab

    1. Open a new terminal using CTRL+T (to be on the same root folder)

    2. cd ../gatsby

    3. Install Gatsby CLI

    4. Start Gatsby

    export SHARP_IGNORE_GLOBAL_LIBVIPS=true (optional if using a mac) 
    yarn
    NODE_TLS_REJECT_UNAUTHORIZED=0  gatsby develop -p 8080
    
    1. open http://localhost:8080/ in your browser
  6. Start Mercure server locally in a new terminal tab

    1. Open a new terminal using CTRL+T (to be on the same root folder)

    2. cd ../mercure

    3. create docker Mercure.rocks container

      docker run \
          -e MERCURE_PUBLISHER_JWT_KEY='!ChangeThisMercureHubJWTSecretKey!' \
          -e MERCURE_SUBSCRIBER_JWT_KEY='!ChangeThisMercureHubJWTSecretKey!' \
          -p 8006:80 \
          -p 8007:443 \
          dunglas/mercure caddy run --config /etc/caddy/Caddyfile.dev
    4. open localhost:8007 in your browser

  7. Start the ADMIN component in a new terminal tab

    1. cd ../admin (assuming that you were in the ./mercure folder)

    2. yarn install

    3. yarn start

    4. a new browser tab should be opened automatically with url http://localhost:3000

  8. Create a new branch

    symfony branch new_branch
    
  9. Develop your feature and commit it in GIT

  10. Push your code to your environment (can be done multiple time)

    symfony push
    
  11. Push to production

    symfony checkout main
    symfony merge new_branch
    

Note: For many of the steps above, you may need to include the CLI flags -p PROJECT_ID and -e ENVIRONMENT_ID if you are not in the project directory or if the environment is associated with an existing pull request.

Deploying to Platform.sh

This repository has all the code it needs in order to deploy to Platform.sh.

Deploy directly to Platform.sh from the command line
  1. Create a free trial:

    Register for a 30 day free trial with Platform.sh. When you have completed signup, select the Create from scratch project option. Give you project a name, and select a region where you would like it to be deployed. As for the Production environment option, make sure to match it to this repository's settings, or to what you have updated the default branch to locally.

  2. Install the Symfony CLI

    Follow the instructions to install the Symfony CLI for your operating system. You can verify the installation by logging in (symfony login) and listing your projects (symfony project:list).

  3. Set the project remote

    Find your PROJECT_ID by running the command symfony project:list

    +---------------+------------------------------------+------------------+---------------------------------+
    | ID            | Title                              | Region           | Organization                    |
    +---------------+------------------------------------+------------------+---------------------------------+
    | PROJECT_ID    | Your Project Name                  | xx-5.platform.sh | your-username                   |
    +---------------+------------------------------------+------------------+---------------------------------+

    Then from within your local copy, run the command symfony project:set-remote PROJECT_ID.

  4. Push using git

    git push platform DEFAULT_BRANCH
  5. or Push using platform CLI

    symfony push
Integrate with a GitHub repo and deploy pull requests
  1. Create a free trial:

    Register for a 30 day free trial with Platform.sh. When you have completed signup, select the Create from scratch project option. Give you project a name, and select a region where you would like it to be deployed. As for the Production environment option, make sure to match it to whatever you have set at https://YOUR_NAMESPACE/nextjs-drupal.

  2. Install the Symfony CLI

    Follow the instructions to install the Symfony CLI for your operating system. You can verify the installation by logging in (symfony login) and listing your projects (symfony project:list).

  3. Setup the integration:

    Consult the GitHub integration documentation to finish connecting your repository to a project on Platform.sh. You will need to create an Access token on GitHub to do so.

  4. Then, just use regular GIT commands to push your code to your repository. It will automatically update your corresponding Platform.sh environment

Integrate with a GitLab repo and deploy merge requests
  1. Create a free trial:

    Register for a 30 day free trial with Platform.sh. When you have completed signup, select the Create from scratch project option. Give you project a name, and select a region where you would like it to be deployed. As for the Production environment option, make sure to match it to this repository's settings, or to what you have updated the default branch to locally.

  2. Install the Symfony CLI

    Follow the instructions to install the Symfony CLI for your operating system. You can verify the installation by logging in (symfony login) and listing your projects (symfony project:list).

  3. Create the repository

    Create a new repository on GitLab, set it as a new remote for your local copy, and push to the default branch.

  4. Setup the integration:

    Consult the GitLab integration documentation to finish connecting a repository to a project on Platform.sh. You will need to create an Access token on GitLab to do so.

  5. Then, just use regular GIT commands to push your code to your repository. It will automatically update your corresponding Platform.sh environment

Integrate with a Bitbucket repo and deploy pull requests
  1. Create a free trial:

    Register for a 30 day free trial with Platform.sh. When you have completed signup, select the Create from scratch project option. Give you project a name, and select a region where you would like it to be deployed. As for the Production environment option, make sure to match it to this repository's settings, or to what you have updated the default branch to locally.

  2. Install the Symfony CLI

    Follow the instructions to install the Symfony CLI for your operating system. You can verify the installation by logging in (symfony login) and listing your projects (symfony project:list).

  3. Create the repository

    Create a new repository on Bitbucket, set it as a new remote for your local copy, and push to the default branch.

  4. Setup the integration:

    Consult the Bitbucket integration documentation to finish connecting a repository to a project on Platform.sh. You will need to create an Access token on Bitbucket to do so.

  5. Then, just use regular GIT commands to push your code to your repository. It will automatically update your corresponding Platform.sh environment

Migrating your data

If you are moving an existing site to Platform.sh, then in addition to code you also need to migrate your data. That means your database and your files.

Importing the database

First, obtain a database dump from your current site and save your dump file as database.sql. Then, import the database into your Platform.sh site using the CLI:

symfony sql -e main < database.sql
Importing files

You first need to download your files from your current hosting environment. The easiest way is likely with rsync, but consult your old host's documentation.

The symfony mount:upload command provides a straightforward way to upload an entire directory to your site at once to a mount defined in a .platform.app.yaml file. Under the hood, it uses an SSH tunnel and rsync, so it is as efficient as possible. (There is also a symfony mount:download command you can use to download files later.) Run the following from your local Git repository root (modifying the --source path if needed and setting BRANCH_NAME to the branch you are using).

A few examples are listed below, but repeat for all directories that contain data you would like to migrate.

symfony mount:upload -e main --mount web/sites/default/files --source ./web/sites/default/files
symfony mount:upload -e main --mount private --source ./private

Note that rsync is picky about its trailing slashes, so be sure to include those.

With your application now deployed on Platform.sh, things get more interesting. Run the command symfony environment:branch new-feature for your project, or open a trivial pull request off of your current branch.

The resulting environment is an exact copy of production (or corresponding parent environment). It contains identical infrastructure to what's been defined in your configuration files, and even includes data copied from your production environment in its services. On this isolated environment, you're free to make any changes to your application you need to, and really test how they will behave on production.

After that, here are a collection of additional resources you might find interesting as you continue with your migration to Platform.sh:

Learn

Troubleshooting

Accessing logs

After the environment has finished its deployment, you can investigate issues that occured on startup, deploy and post_deploy hooks, and generally at runtime using the CLI. Run the command:

symfony ssh

If you are running the command outside of a local copy of the project, you will need to include the -p (project) and/or -e (environment) flags as well. Once you have connected to the container, logs are available within /var/log/ for you to investigate.

Rebuilding cache

You may run into a database error after installing Symfony on your production environment initially. To fix, SSH into the application container (symfony ssh) and rebuild the cache using Symfony console:

php bin/console cache:clear
php bin/console cache:pool:clear cache.app

Blackfire.io: creating a Continuous Observability Strategy

This template includes a starting .blackfire.yml file that can be used to enable Application Performance Monitoring, Profiling, Builds and Performance Testing on your project. Platform.sh comes with Blackfire pre-installed on application containers, and setting up requires minimal configuration.

Resources

Contact

This template is maintained by the Platform.sh Developer Relations team, and they will be notified of all issues and pull requests you open here.

  • Community: Share your question with the community, or see if it's already been asked on our Community site.
  • Slack: If you haven't done so already, you can join Platform.sh's public Slack channels and ping the @devrel_team with any questions.

About Platform.sh

This template has been specifically designed to deploy on Platform.sh.

What is Platform.sh?

Platform.sh is a unified, secure, enterprise-grade platform for building, running and scaling web applications. We’re the leader in Fleet Ops: Everything you need to manage your fleet of websites and apps is available from the start. Because infrastructure and workflows are handled from the start, apps just work, so teams can focus on what really matters: making faster changes, collaborating confidently, and scaling responsibly. Whether managing a fleet of ten or ten thousand sites and apps, Platform.sh is the Developer- preferred solution that scales right.

Our key features include:

To find out more, check out the demo below and go to our website.


The Platform.sh demo

Contribute

Help us keep top-notch templates!

Every one of our templates is open source, and they're important resources for users trying to deploy to Platform.sh for the first time or better understand the platform. They act as getting started guides, but also contain a number of helpful tips and best practices when working with certain languages and frameworks.

See something that's wrong with this template that needs to be fixed? Something in the documentation unclear or missing? Let us know!

How to contribute

Report a bug       Submit a feature request       Open a pull request      


Need help?

Ask the Platform.sh Community       Join us on Slack      


Thanks to all of our amazing contributors!


Made with contrib.rocks


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published