Nuxt/docs/content/3.docs/3.deployment/1.azure.md

4.5 KiB

icon
LogoAzure

Azure

How to deploy Nuxt to Azure Static Web Apps or Azure Functions.

Azure Static Web Apps

How to deploy Nuxt to Azure Static Web Apps with Nuxt Nitro.

::list

  • Support for serverless SSR build
  • Auto-detected when deploying
  • Minimal configuration required ::

Setup

Azure Static Web Apps are designed to be deployed continuously in a GitHub Actions workflow. By default, Nitro will detect this deployment environment and enable the azure preset.

Local preview

You can invoke a development environment to preview before deploying.

NITRO_PRESET=azure yarn build
npx @azure/static-web-apps-cli start .output/public --api-location .output/server

Deploy from CI/CD via GitHub Actions

When you link your GitHub repository to Azure Static Web Apps, a workflow file is added to the repository.

Find the build configuration section in this workflow and update the build configuration:

###### Repository/Build Configurations ######
app_location: '/'
api_location: '.output/server'
output_location: '.output/public'
###### End of Repository/Build Configurations ######

Note

Pending an update in the Azure Static Web Apps workflow, you will also need to run the following in your root directory:

mkdir -p .output/server
touch .output/server/.gitkeep
git add -f .output/server/.gitkeep

That's it! Now Azure Static Web Apps will automatically deploy your Nitro-powered Nuxt application on push.

Azure Functions

::list

  • Support for serverless SSR build
  • No configuration required
  • Static assets served from Azure Function ::

Setup

export default {
  nitro: {
    preset: 'azure_functions'
  }
}

Local preview

Install Azure Functions Core Tools if you want to test locally.

You can invoke a development environment from the serverless directory.

NITRO_PRESET=azure_functions yarn build
cd .output
func start

You can now visit http://localhost:7071/ in your browser and browse your site running locally on Azure Functions.

Deploy from your local machine

To deploy, just run the following command:

# To publish the bundled zip file
az functionapp deployment source config-zip -g <resource-group> -n <app-name> --src dist/deploy.zip
# Alternatively you can publish from source
cd dist && func azure functionapp publish --javascript <app-name>

Deploy from CI/CD via GitHub Actions

First, obtain your Azure Functions Publish Profile and add it as a secret to your GitHub repository settings following these instructions.

Then create the following file as a workflow:

name: azure
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
jobs:
  deploy:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ ubuntu-latest ]
        node: [ 12 ]
    steps:
      - uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node }}

      - name: Checkout
        uses: actions/checkout@master

      - name: Get yarn cache directory path
        id: yarn-cache-dir-path
        run: echo "::set-output name=dir::$(yarn cache dir)"

      - uses: actions/cache@v2
        id: yarn-cache
        with:
          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-yarn-azure

      - name: Install Dependencies
        if: steps.cache.outputs.cache-hit != 'true'
        run: yarn

      - name: Build
        run: npm run build
        env:
          NITRO_PRESET: azure

      - name: 'Deploy to Azure Functions'
        uses: Azure/functions-action@v1
        with:
          app-name: <your-app-name>
          package: .output/deploy.zip
          publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}

Optimizing Azure Functions

Consider turning on immutable packages to support running your app from the zipfile. This can speed up cold starts.

Demo

A live demo is available on https://nuxt-nitro.azurewebsites.net/