mirror of
https://github.com/pezkuwichain/pezkuwi-telemetry.git
synced 2026-05-30 15:51:06 +00:00
Better docker for the frontend (#240)
* Exclude vscode local settings * Switch the image to nginx with ENV support * Add some doc * Fix travis config * Ignore coverage data * Remove version labels * Fix the Dockerfile according to the recent refactoring * Cleanup * Change maintainer According to @woss request * Fix travis config
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
build
|
||||||
|
Dockerfile
|
||||||
|
node_modules
|
||||||
|
.git
|
||||||
@@ -22,3 +22,6 @@ build
|
|||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
.vscode
|
||||||
|
env-config.js
|
||||||
|
.nyc
|
||||||
|
|||||||
+1
-1
@@ -29,8 +29,8 @@ before_script:
|
|||||||
- curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh -s -- -f
|
- curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh -s -- -f
|
||||||
|
|
||||||
script:
|
script:
|
||||||
|
- cd frontend
|
||||||
- yarn
|
- yarn
|
||||||
- cd frontend && yarn
|
|
||||||
- yarn test
|
- yarn test
|
||||||
- yarn check
|
- yarn check
|
||||||
- yarn build
|
- yarn build
|
||||||
|
|||||||
@@ -52,15 +52,22 @@ Follow up installation instructions from the [Polkadot repo](https://github.com/
|
|||||||
### Run via Docker
|
### Run via Docker
|
||||||
|
|
||||||
To run via docker make sure that you have Docker Desktop
|
To run via docker make sure that you have Docker Desktop
|
||||||
|
- If you don't you can download for you OS here [Docker Desktop](https://www.docker.com/products/docker-desktop)
|
||||||
- If you dont you can download for you OS here [Docker Desktop](https://www.docker.com/products/docker-desktop)
|
```
|
||||||
|
|
||||||
```sh
|
|
||||||
docker-compose up --build -d
|
docker-compose up --build -d
|
||||||
```
|
```
|
||||||
|
- `-d` stands for detach, if you would like to see logs I recommend using [Kitmatic](https://kitematic.com/) or don't use the -d
|
||||||
- -d stands for detach, if you would like to see logs i recommend using [Kitmatic](https://kitematic.com/) or don't use the -d
|
- `--build` will build the images and rebuild, but this is not required every time
|
||||||
- --build will build the images and rebuild, but this is not required every time
|
|
||||||
- If you want to makes UI changes, there is no need to rebuild the image as the files are being copied in via volumes.
|
- If you want to makes UI changes, there is no need to rebuild the image as the files are being copied in via volumes.
|
||||||
|
|
||||||
Now navigate to localhost:3000 in your browser to view the app.
|
Now navigate to localhost:3000 in your browser to view the app.
|
||||||
|
|
||||||
|
## Docker
|
||||||
|
|
||||||
|
### Build & Publish the Frontend docker image
|
||||||
|
|
||||||
|
The building process is standard. You just need to notice that the Dockerfile is in ./packages/frontend/ and tell docker about it. The context must remain the repository's root though.
|
||||||
|
|
||||||
|
```
|
||||||
|
DOCKER_USER=chevdor ./scripts/build-docker-frontend.sh
|
||||||
|
```
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
FROM node:10-alpine
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
RUN apk add --no-cache python make g++
|
|
||||||
|
|
||||||
COPY ./scripts ./scripts
|
|
||||||
COPY ./packages ./packages
|
|
||||||
COPY ./package.json ./yarn.lock ./tsconfig.json ./
|
|
||||||
|
|
||||||
RUN yarn && yarn cache clean
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
12
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#### BUILDER IMAGE ####
|
||||||
|
FROM node:12 as builder
|
||||||
|
LABEL maintainer="Chevdor <chevdor@gmail.com>"
|
||||||
|
LABEL description="Polkadot Telemetry frontend builder image"
|
||||||
|
|
||||||
|
WORKDIR /opt/builder
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
RUN yarn install && \
|
||||||
|
yarn build && \
|
||||||
|
yarn cache clean
|
||||||
|
|
||||||
|
|
||||||
|
#### OUTPUT IMAGE ####
|
||||||
|
FROM nginx:stable-alpine
|
||||||
|
LABEL maintainer="Chevdor <chevdor@gmail.com>"
|
||||||
|
LABEL description="Polkadot Telemetry frontend"
|
||||||
|
|
||||||
|
ENV SUBSTRATE_TELEMETRY_URL=
|
||||||
|
|
||||||
|
WORKDIR /usr/share/nginx/html
|
||||||
|
|
||||||
|
COPY --from=builder /opt/builder/env.sh /usr/bin/
|
||||||
|
RUN apk add --no-cache bash; chmod +x /usr/bin/env.sh
|
||||||
|
|
||||||
|
COPY --from=builder /opt/builder/nginx/nginx.conf /etc/nginx/nginx.conf
|
||||||
|
COPY --from=builder /opt/builder/build /usr/share/nginx/html
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
CMD ["/bin/bash", "-c", "/usr/bin/env.sh && nginx -g \"daemon off;\""]
|
||||||
Executable
+20
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This script is used when the docker container starts and does the magic to
|
||||||
|
# bring the ENV variables to the generated static UI.
|
||||||
|
|
||||||
|
TARGET=./env-config.js
|
||||||
|
|
||||||
|
# Recreate config file
|
||||||
|
echo -n > $TARGET
|
||||||
|
|
||||||
|
declare -a vars=(
|
||||||
|
"SUBSTRATE_TELEMETRY_URL"
|
||||||
|
"SUBSTRATE_TELEMETRY_SAMPLE"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo "window.process_env = {" >> $TARGET
|
||||||
|
for VAR in ${vars[@]}; do
|
||||||
|
echo " $VAR: \"${!VAR}\"," >> $TARGET
|
||||||
|
done
|
||||||
|
echo "}" >> $TARGET
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
user nginx;
|
||||||
|
worker_processes 1;
|
||||||
|
|
||||||
|
error_log /var/log/nginx/error.log warn;
|
||||||
|
pid /var/run/nginx.pid;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||||
|
'$status $body_bytes_sent "$http_referer" '
|
||||||
|
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||||
|
|
||||||
|
access_log /var/log/nginx/access.log main;
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
#tcp_nopush on;
|
||||||
|
|
||||||
|
keepalive_timeout 65;
|
||||||
|
gzip on;
|
||||||
|
include /etc/nginx/conf.d/*.conf;
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
<meta name="theme-color" content="#000000">
|
<meta name="theme-color" content="#000000">
|
||||||
<!-- <link rel="manifest" href="%PUBLIC_URL%/manifest.json"> -->
|
<!-- <link rel="manifest" href="%PUBLIC_URL%/manifest.json"> -->
|
||||||
<title>Polkadot Telemetry</title>
|
<title>Polkadot Telemetry</title>
|
||||||
|
<script type="text/javascript" src="/env-config.js"></script>
|
||||||
<style>
|
<style>
|
||||||
body, html {
|
body, html {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
|
|||||||
Executable
+11
@@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
cd `git rev-parse --show-toplevel`
|
||||||
|
|
||||||
|
IMAGE=telemetry-frontend
|
||||||
|
DOCKER_USER=${DOCKER_USER:-paritytech}
|
||||||
|
echo "Publishing $IMAGE as $DOCKER_USER"
|
||||||
|
|
||||||
|
docker build -t $IMAGE -f packages/frontend/Dockerfile .
|
||||||
|
docker tag $IMAGE $DOCKER_USER/$IMAGE
|
||||||
|
docker push $DOCKER_USER/$IMAGE
|
||||||
Reference in New Issue
Block a user