open-index/open-npm huggingface dataset:
npm package: @mw866/petstore-api
Description: This is a Petstore API service built on Node.
Author: Chris Wang
Latest version: 1.0.7

# PetStore API
[![Create new releases](https://github.com/mw866/petstore-api/actions/workflows/release.yml/badge.svg)](https://github.com/mw866/petstore-api/actions/workflows/release.yml)
[![CI](https://github.com/mw866/petstore-api/actions/workflows/ci.yml/badge.svg)](https://github.com/mw866/petstore-api/actions/workflows/ci.yml)
## Overview

This is a Petstore API service generated by `swagger-codegen`

## Manually generate node server code

```
swagger-codegen generate -i api/openapi.yaml -l nodejs-server 
```

## Build the Docker image

### Automated build

See https://hub.docker.com/r/mw866/petstore-api

GitHub Actions takes care of the multi-platform build.

### Manual build

```
docker build -t mw866/petstore-api:latest .
```

**Step 1** - Install [buildx](https://github.com/docker/buildx).

**Step 2** - Create the `buildx` builder instance.

```
docker buildx create --use
```

**Step 3** - Check the runtime supported.

```
docker buildx inspect --bootstrap
```

**Step 4** - Build and publish the image

```
export TAG=$(jq -r .version package.json)
docker buildx build --push --platform linux/arm/v7,linux/arm64/v8,linux/amd64 --tag mw866/petstore-api:$TAG --tag mw866/petstore-api:latest .
```

## Running the server locally

### With Docker

```
docker run mw866/petstore-api -p 8080:8080
```

### Without Docker
To run the server, run:

```
npm start
```

## Publish application using `cloudflared` and `docker-compose`

1. Install `cloudflared` 
1. Run `cloudflared login`
1. Update the values in `.env.example` and rename it to `.env`.
1. Install Docker Engine and `docker-compose`
1. Run `docker-compose up`

If you see the error message like ```cloudflared    | Error getting origin cert: cannot check if origin cert exists at path /.cloudflared/cert.pem```, it's because of the non-privileged user in the `cloudflared` Docker image. See [this issue](https://github.com/cloudflare/cloudflared/issues/163) for solution.

## Reference

[Dockerizing a Node.js web app](https://nodejs.org/en/docs/guides/nodejs-docker-webapp/)

[Publishing Docker images using GitHub Actions (outdated)](https://docs.github.com/en/actions/guides/publishing-docker-images)

[Building and testing Node.js](https://docs.github.com/en/actions/guides/building-and-testing-nodejs)