Skip to content

Commit

Permalink
Add Dockerfile to start GraphiQL using www's data
Browse files Browse the repository at this point in the history
  • Loading branch information
m-allanson committed Feb 12, 2018
1 parent ab1d7f5 commit 5cf6ded
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 6 deletions.
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
node_modules
**/node_modules
**/public
npm-debug.log
.git
27 changes: 27 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Create a standalone instance of GraphiQL populated with gatsbyjs.org's data
# ---
# libvips needed for image manipulation
FROM marcbachmann/libvips:8.4.1 as build

# Node.js version 8 and build tools for sharp
RUN apt-get update && apt-get install -y build-essential g++ curl
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && apt-get install -y nodejs && rm -rf /var/lib/apt/lists/*

RUN npm install -g [email protected]

WORKDIR /usr/src/app

COPY . .
RUN yarn && cd www && yarn
RUN cd www && yarn run build

# Start again and just copy across the built files (+ node_modules)
# TODO: Can we do this all on Alpine for a much smaller image? This node:8 image is ~600MB
FROM node:8 as dist

COPY --from=build /usr/src/app /usr/src/app
WORKDIR /usr/src/app

# To run this image, set the port as an env var with `-e PORT=xxxx` e.g.
# docker run -p 8080:8080 --rm -it -e PORT=8080 <registryUsername>/<imageName>
CMD [ "node","./scripts/www-data-explorer.js" ]
6 changes: 0 additions & 6 deletions packages/gatsby/src/commands/data-explorer.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ const express = require(`express`)
const graphqlHTTP = require(`express-graphql`)
const { store } = require(`../redux`)
const bootstrap = require(`../bootstrap`)
const { GraphQLSchema } = require(`graphql`)

module.exports = async (program: any) => {
let { port, host } = program
Expand All @@ -15,11 +14,6 @@ module.exports = async (program: any) => {

const schema = store.getState().schema

console.log(
`Schema is instance of GraphQLSchema?`,
schema instanceof GraphQLSchema
)

const app = express()
app.use(
`/`,
Expand Down
26 changes: 26 additions & 0 deletions scripts/www-data-explorer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const path = require(`path`)
const gatsbyPath = path.resolve(
__dirname,
`..`,
`www`,
`node_modules`,
`gatsby`,
`dist`
)
const explorer = require(path.resolve(
gatsbyPath,
`commands`,
`data-explorer.js`
))

const port = process.env.PORT || 8080
const host = `0.0.0.0`
const directory = path.join(__dirname, `..`, `www`)
const sitePackageJson = require(path.join(directory, `package.json`))

explorer({
port,
host,
directory,
sitePackageJson,
})

0 comments on commit 5cf6ded

Please sign in to comment.