Commit 36ba9be3 authored by James Laver's avatar James Laver

Document docker build

parent c06cf421
...@@ -10,4 +10,5 @@ RUN apt-get update && apt-get install -y yarn ...@@ -10,4 +10,5 @@ RUN apt-get update && apt-get install -y yarn
RUN curl -L https://github.com/coot/zephyr/releases/download/v0.3.2/Linux.tar.gz | tar zx -C /usr/bin --strip-components=1 zephyr/zephyr RUN curl -L https://github.com/coot/zephyr/releases/download/v0.3.2/Linux.tar.gz | tar zx -C /usr/bin --strip-components=1 zephyr/zephyr
WORKDIR /opt/app WORKDIR /opt/app
EXPOSE 5000/tcp
CMD ["bash"] CMD ["bash"]
\ No newline at end of file
...@@ -14,14 +14,47 @@ granted access to a [backend](https://gitlab.iscpif.fr/gargantext/haskell-gargan ...@@ -14,14 +14,47 @@ granted access to a [backend](https://gitlab.iscpif.fr/gargantext/haskell-gargan
This software is free software, developed by the CNRS Complex Systems This software is free software, developed by the CNRS Complex Systems
Institute of Paris Île-de-France (ISC-PIF) and its partners. Institute of Paris Île-de-France (ISC-PIF) and its partners.
## Dependencies ## Getting set up
There are two approaches to working with the build:
1. Use our docker setup
2. Install our dependencies yourself
The javascript ecosystem kind of assumes if you're on linux, you're
running on debian or ubuntu. I haven't yet managed to get garg to
build on alpine linux, for example. If you're on an oddball system, I
*strongly* recommend you just use the docker setup.
### Docker setup
You will need docker and docker-compose installed.
First, Source our environment file:
```shell
source ./env.sh
```
WARNING: you must `source ./env.sh` before using the docker
container. If you don't do that, the container will write files as
root and you'll need root powers to get ownership back!
Now build the docker image:
```shell
docker-compose build frontend
```
That's it, skip ahead to "Development".
### Manual setup
The build requires the following system dependencies preinstalled: The build requires the following system dependencies preinstalled:
* NodeJS (11+) * NodeJS (11+)
* Yarn (Recent) * Yarn (Recent)
### NodeJS #### NodeJS
On debian testing, debian unstable or ubuntu: On debian testing, debian unstable or ubuntu:
...@@ -55,7 +88,7 @@ brew install node ...@@ -55,7 +88,7 @@ brew install node
For other platforms, please refer to [the nodejs website](https://nodejs.org/en/download/). For other platforms, please refer to [the nodejs website](https://nodejs.org/en/download/).
### Yarn (javascript package manager) #### Yarn (javascript package manager)
On debian or ubuntu: On debian or ubuntu:
...@@ -75,63 +108,89 @@ For other platforms, please refer to [the yarn website](https://www.yarnpkg.com/ ...@@ -75,63 +108,89 @@ For other platforms, please refer to [the yarn website](https://www.yarnpkg.com/
## Development ## Development
Once you have node and yarn installed, you may install deps with: ### Docker environment
Are you using the docker setup? Run this:
```shell
source ./env.sh
```
This enables the docker container to run as the current user so any
files it writes will be readable by you. It also creates a `darn`
shell alias (short for `docker yarn`) for running yarn commands inside
the docker container.
### Basic tasks
Now we must install our javascript and purescript dependencies:
```shell ```shell
yarn install -D && yarn install-ps darn install -D && darn install-ps # for docker setup
yarn install -D && yarn install-ps # for manual setup
``` ```
You will likely want to check your work in a browser. We provide a You will likely want to check your work in a browser. We provide a
local development webserver that serves on port 5000 for this purpose: local development webserver that serves on port 5000 for this purpose:
```shell ```shell
yarn server darn server # for docker setup
yarn server # for manual setup
``` ```
To generate a new browser bundle to test: To generate a new browser bundle to test:
```shell ```shell
yarn build darn build # for docker setup
yarn build # for manual setup
``` ```
If you are rapidly iterating and just want to type check your code: If you are rapidly iterating and just want to type check your code:
```shell ```shell
yarn compile darn compile # for docker setup
yarn compile # for manual setup
``` ```
You may access a purescript repl if you want to explore: You may access a purescript repl if you want to explore:
```shell ```shell
yarn repl darn repl # for docker setup
yarn repl # for manual setup
``` ```
If you need to reinstall dependencies such as after a git pull or branch switch: If you need to reinstall dependencies such as after a git pull or branch switch:
```shell ```shell
yarn install -D && yarn install-ps # both javascript and purescript darn install -D && darn install-ps # for docker setup
yarn install -D && yarn install-ps # for manual setup
``` ```
If something goes wrong building after a deps update, you may clean If something goes wrong building after a deps update, you may clean
build artifacts and try again: build artifacts and try again:
```shell ```shell
yarn clean-js # clean javascript, very useful # for docker setup
yarn clean-ps # clean purescript, should never be required, possible purescript bug darn clean-js # clean javascript, very useful
yarn clean # clean both purescript and javascript darn clean-ps # clean purescript, should never be required, possible purescript bug
darn clean # clean both purescript and javascript
# for manual setup
yarn clean-js
yarn clean-ps
yarn clean
``` ```
If you edit the SASS, you'll need to rebuild the CSS: If you edit the SASS, you'll need to rebuild the CSS:
```shell ```shell
yarn sass darn css # for docker setup
yarn css # for manual setup
``` ```
<!-- A `purs ide` connection will be available on port 9002 while the --> <!-- A `purs ide` connection will be available on port 9002 while the -->
<!-- development server is running. --> <!-- development server is running. -->
A guide to getting set up with the IDE integration is coming soon, I hope. A guide to getting set up with the IDE integration is coming soon, I hope.
of this document.
### Note to contributors ### Note to contributors
...@@ -139,20 +198,6 @@ Please follow CONTRIBUTING.md ...@@ -139,20 +198,6 @@ Please follow CONTRIBUTING.md
### How do I? ### How do I?
#### Change which backend to connect to?
Edit `Config.purs`. Find the function `endConfig'` just after the
imports and edit `back`. The definitions are not far below, just after
the definitions of the various `front` options.
Example (using `demo.gargantext.org` as backend):
```
endConfig' :: ApiVersion -> EndConfig
endConfig' v = { front : frontRelative
, back : backDemo v }
```
#### Add a javascript dependency? #### Add a javascript dependency?
Add it to `package.json`, under `dependencies` if it is needed at Add it to `package.json`, under `dependencies` if it is needed at
...@@ -173,13 +218,13 @@ works. It's written in dhall, so you can use comments and such. ...@@ -173,13 +218,13 @@ works. It's written in dhall, so you can use comments and such.
You will then need to rebuild the package set: You will then need to rebuild the package set:
```shell ```shell
yarn rebuild-set yarn rebuild-set # or darn rebuild-set
``` ```
#### Upgrade the base package set local is based on to latest? #### Upgrade the base package set local is based on to latest?
```shell ```shell
yarn rebase-set && yarn rebuild-set yarn rebase-set && yarn rebuild-set # or darn rebase-set && darn rebuild-set
``` ```
This will occasionally result in swearing when you go on to build. This will occasionally result in swearing when you go on to build.
......
...@@ -4,9 +4,13 @@ services: ...@@ -4,9 +4,13 @@ services:
build: build:
context: . context: .
dockerfile: "Dockerfile.dev" dockerfile: "Dockerfile.dev"
stdin_open: true
tty: true
user: $UID:$GID
ports:
- 5000:5000
volumes: volumes:
- type: bind - .:/opt/app
source: . - /etc/group:/etc/group:ro
target: /opt/app - /etc/passwd:/etc/passwd:ro
stdin_open: true # like docker run -i - /etc/shadow:/etc/shadow:ro
tty: true # like docker run -t \ No newline at end of file
export UID=$(id -u)
export GID=$(id -g)
alias darn="docker-compose run frontend yarn"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment