Skip to content

Commit

Permalink
Merge branch 'master'
Browse files Browse the repository at this point in the history
  • Loading branch information
TechQuery committed Nov 23, 2023
2 parents 16c23e8 + b188437 commit d4268a4
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 22 deletions.
24 changes: 12 additions & 12 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
FROM node:18-slim
# Reference: https://pnpm.io/docker#example-1-build-a-bundle-in-a-docker-container

USER root
FROM node:18-slim AS base
RUN apt-get update && \
apt-get install curl -y --no-install-recommends
COPY . /app
WORKDIR /app

RUN npm rm yarn -g
FROM base AS prod-deps
RUN npm i --prod

RUN mkdir /home/node/app
WORKDIR /home/node/app

COPY package.json package-lock.json file-content-injector.js /home/node/app/
FROM base AS build
RUN npm i

COPY . /home/node/app
RUN npm run build

RUN npm prune --production || true \
npm cache clean -f

FROM base
COPY --from=prod-deps /app/node_modules /app/node_modules
COPY --from=build /app/dist /app/dist
EXPOSE 3000
CMD ["npm", "start"]
57 changes: 57 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,63 @@ These two services are very much alike. In fact, `Polyfiller` depends on the lib
The server is built with support for both HTTP2 and HTTP. The environment variable `HTTP2=[true|false]` decides whether a HTTP2 server will be hosted or not.
If you use a load balancer and something like `nginx` in a reverse proxy setup, please know that `nginx` doesn't support HTTP2 via its proxy module, so you have to use HTTP1.1 there. Thankfully, it is as easy as setting `HTTP2=false` before launching the server and setting `HTTPS=false`.

#### Docker

> This guide has been tested in the deployment process of China mirror: https://polyfiller.kaiyuanshe.cn
##### Simple container

Run shown commands in the Project Root folder:

```shell
docker build -t polyfiller/api-service .
docker run --name polyfiller -e NODE_ENV=production -p 3000:3000 polyfiller/api-service
```

##### Composed services with Object Storage

Install Docker plugins in Cloud Server at first:

```shell
sudo apt install docker-compose
sudo docker plugin install juicedata/juicefs
```

###### 1. Manual deployment

1. Write [JuiceFS environment variables](https://juicefs.com/docs/community/juicefs_on_docker/#using-docker-compose) into `.env` file in the Project Root folder:

```ini
STORAGE_TYPE =
BUCKET =
ACCESS_KEY =
SECRET_KEY =
```

2. Run shown commands in the Project Root folder:

```shell
docker-compose up -d
```

###### 2. Automatic deployment

1. Set GitHub Repository secrets:

| name | value |
| :--------: | :-------------------------------: |
| `ENV_FILE` | `.env` file shown above |
| `HOST` | IP or Domain Name of Cloud Server |
| `USER` | Account Name of Cloud Server |
| `SSH_KEY` | SSH Private Key of Cloud Server |

2. Push a Git tag:

```shell
git tag v0.2.3-oss # the version number is the value of "version" field in "package.json"
git push origin --tags
```

## Logo

All credits go to [Andreas Mehlsen (@andreasbm)](https://github.com/andreasbm/) for the awesome logo design.
Expand Down
39 changes: 29 additions & 10 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version: '3'
version: "3"

volumes:
polyfill-cache:
Expand All @@ -12,12 +12,31 @@ volumes:
secret-key: ${SECRET_KEY}

services:
api-service:
image: polyfiller/api-service
environment:
- NODE_ENV=production
ports:
- 3001:3000
volumes:
- polyfill-cache:/tmp/@wessberg/polyfiller
restart: always
api-service:
image: polyfiller/api-service
environment:
- NODE_ENV=production
ports:
- 3001:3000
volumes:
- polyfill-cache:/tmp/@wessberg/polyfiller
networks:
- polyfiller
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:3001/ || exit 1"]
interval: 3s
retries: 5
start_period: 30s
labels:
- autoheal=true
restart: always
logging:
driver: json-file
options:
max-size: 10m

autoheal:
image: willfarrell/autoheal:1.2.0
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: always

0 comments on commit d4268a4

Please sign in to comment.