chore: simplify frontend docker image
This commit is contained in:
parent
0cf61c628a
commit
0330699c05
@ -1,18 +1,21 @@
|
|||||||
FROM node:8-alpine
|
FROM node:8-alpine
|
||||||
|
|
||||||
# Built in context of root folder in repo
|
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
RUN set -x \
|
RUN set -x \
|
||||||
&& apk update \
|
&& apk update \
|
||||||
&& apk add --update curl bash build-base git nginx python openssl \
|
&& apk add --update curl bash nginx openssl \
|
||||||
&& apk upgrade \
|
&& apk upgrade \
|
||||||
&& rm -rf /var/cache/apk/*
|
&& rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
# Use consul-template to re-write our Nginx virtualhost config
|
# Install Consul template
|
||||||
RUN curl -Lo /tmp/consul_template_0.15.0_linux_amd64.zip https://releases.hashicorp.com/consul-template/0.15.0/consul-template_0.15.0_linux_amd64.zip && \
|
# Releases at https://releases.hashicorp.com/consul-template/
|
||||||
unzip /tmp/consul_template_0.15.0_linux_amd64.zip && \
|
RUN set -ex \
|
||||||
mv consul-template /bin
|
&& export CONSUL_TEMPLATE_VERSION=0.19.0 \
|
||||||
|
&& export CONSUL_TEMPLATE_CHECKSUM=31dda6ebc7bd7712598c6ac0337ce8fd8c533229887bd58e825757af879c5f9f \
|
||||||
|
&& curl --retry 7 --fail -Lso /tmp/consul-template.zip "https://releases.hashicorp.com/consul-template/${CONSUL_TEMPLATE_VERSION}/consul-template_${CONSUL_TEMPLATE_VERSION}_linux_amd64.zip" \
|
||||||
|
&& echo "${CONSUL_TEMPLATE_CHECKSUM} /tmp/consul-template.zip" | sha256sum -c \
|
||||||
|
&& unzip /tmp/consul-template.zip -d /usr/local/bin \
|
||||||
|
&& rm /tmp/consul-template.zip
|
||||||
|
|
||||||
# Install Consul agent
|
# Install Consul agent
|
||||||
ENV CONSUL_VERSION 0.7.0
|
ENV CONSUL_VERSION 0.7.0
|
||||||
@ -31,26 +34,17 @@ RUN curl -Lo /tmp/containerpilot.tar.gz "https://github.com/joyent/containerpilo
|
|||||||
&& tar zxf /tmp/containerpilot.tar.gz -C /bin \
|
&& tar zxf /tmp/containerpilot.tar.gz -C /bin \
|
||||||
&& rm /tmp/containerpilot.tar.gz
|
&& rm /tmp/containerpilot.tar.gz
|
||||||
|
|
||||||
# Copy required files
|
|
||||||
RUN mkdir -p /opt/app/
|
|
||||||
COPY ./ /opt/app/
|
|
||||||
COPY ./docker/frontend/bin /bin
|
|
||||||
COPY ./docker/frontend/etc/nginx.conf.tmpl /etc/nginx/nginx.conf.tmpl
|
|
||||||
COPY ./docker/frontend/etc/containerpilot.json5 /etc/containerpilot.json5
|
|
||||||
ENV CONTAINERPILOT /etc/containerpilot.json5
|
|
||||||
|
|
||||||
WORKDIR /opt/app/
|
|
||||||
|
|
||||||
ENV BUILD=production
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
RUN npm install -g yarn
|
# Copy required files
|
||||||
RUN yarn add lerna
|
COPY ./bin /bin
|
||||||
|
COPY ./etc/nginx.conf.tmpl /etc/nginx/nginx.conf.tmpl
|
||||||
|
COPY ./etc/containerpilot.json5 /etc/containerpilot.json5
|
||||||
|
ENV CONTAINERPILOT /etc/containerpilot.json5
|
||||||
|
|
||||||
RUN ./node_modules/.bin/lerna clean --yes --scope joyent-cp-frontend --include-filtered-dependencies \
|
RUN mkdir -p /opt/app/
|
||||||
&& ./node_modules/.bin/lerna bootstrap --scope joyent-cp-frontend --include-filtered-dependencies
|
WORKDIR /opt/app/
|
||||||
|
RUN npm pack joyent-cp-frontend
|
||||||
WORKDIR /opt/app/packages/cp-frontend
|
RUN tar -xzf joyent-cp-frontend*.tgz
|
||||||
RUN yarn build
|
|
||||||
|
|
||||||
CMD ["/bin/containerpilot"]
|
CMD ["/bin/containerpilot"]
|
||||||
|
@ -24,7 +24,7 @@ preStart() {
|
|||||||
|
|
||||||
consul-template \
|
consul-template \
|
||||||
-once \
|
-once \
|
||||||
-consul localhost:8500 \
|
-consul-addr "localhost:8500" \
|
||||||
-template "/etc/nginx/nginx.conf.tmpl:/etc/nginx/nginx.conf"
|
-template "/etc/nginx/nginx.conf.tmpl:/etc/nginx/nginx.conf"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ preStart() {
|
|||||||
onChange() {
|
onChange() {
|
||||||
consul-template \
|
consul-template \
|
||||||
-once \
|
-once \
|
||||||
-consul localhost:8500 \
|
-consul-addr "localhost:8500" \
|
||||||
-template "/etc/nginx/nginx.conf.tmpl:/etc/nginx/nginx.conf:nginx -s reload"
|
-template "/etc/nginx/nginx.conf.tmpl:/etc/nginx/nginx.conf:nginx -s reload"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ http {
|
|||||||
server {
|
server {
|
||||||
listen 443 ssl;
|
listen 443 ssl;
|
||||||
listen [::]:443 ssl;
|
listen [::]:443 ssl;
|
||||||
root /opt/app/packages/cp-frontend/build;
|
root /opt/app/package/build;
|
||||||
|
|
||||||
ssl_certificate /etc/nginx/certs/server/server.crt;
|
ssl_certificate /etc/nginx/certs/server/server.crt;
|
||||||
ssl_certificate_key /etc/nginx/certs/server/server.key;
|
ssl_certificate_key /etc/nginx/certs/server/server.key;
|
||||||
|
@ -46,8 +46,7 @@ prometheus:
|
|||||||
# FRONTEND
|
# FRONTEND
|
||||||
#############################################################################
|
#############################################################################
|
||||||
frontend:
|
frontend:
|
||||||
build: ./
|
build: docker/frontend
|
||||||
dockerfile: docker/frontend/Dockerfile
|
|
||||||
mem_limit: 512m
|
mem_limit: 512m
|
||||||
links:
|
links:
|
||||||
- consul:consul
|
- consul:consul
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
{
|
{
|
||||||
"name": "joyent-cp-frontend",
|
"name": "joyent-cp-frontend",
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"private": true,
|
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"repository": "github:yldio/joyent-portal",
|
"repository": "github:yldio/joyent-portal",
|
||||||
"main": "src/index.js",
|
"main": "build/",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "REACT_APP_GQL_PORT=3000 PORT=3069 REACT_APP_GQL_PROTOCOL=http react-scripts start",
|
"dev": "REACT_APP_GQL_PORT=3000 PORT=3069 REACT_APP_GQL_PROTOCOL=http react-scripts start",
|
||||||
"start": "PORT=3069 react-scripts start",
|
"start": "PORT=3069 react-scripts start",
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "joyent-manifest-editor",
|
"name": "joyent-manifest-editor",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"private": true,
|
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "joyent-ui-toolkit",
|
"name": "joyent-ui-toolkit",
|
||||||
"version": "1.1.0",
|
"version": "1.1.2",
|
||||||
"private": true,
|
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"repository": "github:yldio/joyent-portal",
|
"repository": "github:yldio/joyent-portal",
|
||||||
"main": "dist/umd/index.js",
|
"main": "dist/umd/index.js",
|
||||||
@ -28,7 +27,15 @@
|
|||||||
"postinstall": "redrun -s copy-fonts compile"
|
"postinstall": "redrun -s copy-fonts compile"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"babel-cli": "^6.24.1",
|
||||||
|
"babel-generator": "^6.25.0",
|
||||||
|
"babel-helpers": "^6.24.1",
|
||||||
|
"babel-plugin-inline-react-svg": "^0.4.0",
|
||||||
|
"babel-plugin-styled-components": "^1.1.7",
|
||||||
|
"babel-preset-joyent-portal": "^1.0.3",
|
||||||
|
"babel-template": "^6.25.0",
|
||||||
"camel-case": "^3.0.0",
|
"camel-case": "^3.0.0",
|
||||||
|
"cross-env": "^5.0.1",
|
||||||
"d3": "^4.10.0",
|
"d3": "^4.10.0",
|
||||||
"disable-scroll": "^0.3.0",
|
"disable-scroll": "^0.3.0",
|
||||||
"lodash.difference": "^4.5.0",
|
"lodash.difference": "^4.5.0",
|
||||||
@ -41,6 +48,7 @@
|
|||||||
"prop-types": "^15.5.10",
|
"prop-types": "^15.5.10",
|
||||||
"react-broadcast": "^0.1.2",
|
"react-broadcast": "^0.1.2",
|
||||||
"react-styled-flexboxgrid": "^2.0.3",
|
"react-styled-flexboxgrid": "^2.0.3",
|
||||||
|
"redrun": "^5.9.15",
|
||||||
"reduce-css-calc": "^2.0.5",
|
"reduce-css-calc": "^2.0.5",
|
||||||
"remcalc": "^1.0.8",
|
"remcalc": "^1.0.8",
|
||||||
"rnd-id": "^1.0.8",
|
"rnd-id": "^1.0.8",
|
||||||
@ -49,11 +57,7 @@
|
|||||||
"unitcalc": "^1.0.8"
|
"unitcalc": "^1.0.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"babel-cli": "^6.24.1",
|
"csso": "^3.1.1",
|
||||||
"babel-plugin-inline-react-svg": "^0.4.0",
|
|
||||||
"babel-plugin-styled-components": "^1.1.7",
|
|
||||||
"babel-preset-joyent-portal": "^1.0.3",
|
|
||||||
"cross-env": "^5.0.1",
|
|
||||||
"eslint": "^3.19.0",
|
"eslint": "^3.19.0",
|
||||||
"eslint-config-joyent-portal": "2.0.0",
|
"eslint-config-joyent-portal": "2.0.0",
|
||||||
"jest": "^20.0.4",
|
"jest": "^20.0.4",
|
||||||
@ -61,6 +65,7 @@
|
|||||||
"jest-matcher-utils": "^20.0.3",
|
"jest-matcher-utils": "^20.0.3",
|
||||||
"jest-snapshot": "^20.0.3",
|
"jest-snapshot": "^20.0.3",
|
||||||
"jest-styled-components": "^4.2.2",
|
"jest-styled-components": "^4.2.2",
|
||||||
|
"jsesc": "^2.5.1",
|
||||||
"react": "^15.6.1",
|
"react": "^15.6.1",
|
||||||
"react-docgen": "^2.17.0",
|
"react-docgen": "^2.17.0",
|
||||||
"react-docgen-displayname-handler": "^1.0.0",
|
"react-docgen-displayname-handler": "^1.0.0",
|
||||||
@ -70,7 +75,6 @@
|
|||||||
"react-scripts": "^1.0.10",
|
"react-scripts": "^1.0.10",
|
||||||
"react-styleguidist": "^5.5.9",
|
"react-styleguidist": "^5.5.9",
|
||||||
"react-test-renderer": "^15.6.1",
|
"react-test-renderer": "^15.6.1",
|
||||||
"redrun": "^5.9.15",
|
|
||||||
"redux": "^3.7.2",
|
"redux": "^3.7.2",
|
||||||
"redux-form": "^7.0.2",
|
"redux-form": "^7.0.2",
|
||||||
"snapguidist": "^2.0.0",
|
"snapguidist": "^2.0.0",
|
||||||
@ -78,6 +82,7 @@
|
|||||||
"stylelint-config-primer": "^2.0.0",
|
"stylelint-config-primer": "^2.0.0",
|
||||||
"stylelint-config-standard": "^17.0.0",
|
"stylelint-config-standard": "^17.0.0",
|
||||||
"stylelint-processor-styled-components": "styled-components/stylelint-processor-styled-components#2a33b5f",
|
"stylelint-processor-styled-components": "styled-components/stylelint-processor-styled-components#2a33b5f",
|
||||||
|
"svgo": "^0.7.2",
|
||||||
"tinycolor2": "^1.4.1",
|
"tinycolor2": "^1.4.1",
|
||||||
"title-case": "^2.1.1",
|
"title-case": "^2.1.1",
|
||||||
"webpack": "^3.4.1"
|
"webpack": "^3.4.1"
|
||||||
|
Loading…
Reference in New Issue
Block a user