]> git.immae.eu Git - github/fretlink/purescript-docker.git/blob - README.md
Updated README
[github/fretlink/purescript-docker.git] / README.md
1 # purescript-docker
2
3 [![Docker Stars](https://img.shields.io/docker/stars/gyeh/purescript.svg?maxAge=2592000)](https://hub.docker.com/r/gyeh/purescript/)
4 [![Docker Pulls](https://img.shields.io/docker/pulls/gyeh/purescript.svg?maxAge=2592000)](https://hub.docker.com/r/gyeh/purescript/)
5
6 Purescript build for docker
7
8 ![Purescript](https://raw.githubusercontent.com/Risto-Stevcev/purescript-docker/master/logo.png)
9
10 # usage
11
12 Note: You may need to run docker comands as a superuser (sudo) depending on how it's configured on your system.
13
14 Pull the version you want to use:
15
16 ```
17 $ docker pull gyeh/purescript:0.9.1
18 ```
19
20 Check to see that your image was created:
21
22 ```
23 $ docker images
24 REPOSITORY TAG IMAGE ID CREATED SIZE
25 gyeh/purescript 0.9.1 b09608732ec8 0 minutes ago 831.9 MB
26 ```
27
28 Try the Purescript REPL (you need to run it in interactive mode with a pseudo-teletype):
29
30 ```
31 $ docker run --rm -it b09608732ec8
32 ____ ____ _ _
33 | _ \ _ _ _ __ ___/ ___| ___ _ __(_)_ __ | |_
34 | |_) | | | | '__/ _ \___ \ / __| '__| | '_ \| __|
35 | __/| |_| | | | __/___) | (__| | | | |_) | |_
36 |_| \__,_|_| \___|____/ \___|_| |_| .__/ \__|
37 |_|
38
39 :? shows help
40 > import Prelude
41 > 2 + 2
42 4
43
44 > :t "Foo"
45 String
46
47 >
48 See ya!
49 ```
50
51 To start doing real work with it, you need to mount a volume to your docker container when you run it.
52 Clone the [Purescript By Example](https://leanpub.com/purescript/read) code as an initial example:
53
54 ```
55 $ git clone https://github.com/paf31/purescript-book
56 Cloning into 'purescript-book'...
57 Checking connectivity... done.
58 ```
59
60 Then mount the volume using the absolute path of the cloned repo to the `/home/pureuser/src` folder in the container:
61
62 ```
63 $ docker run --rm -itv ~/git/purescript/tmp/purescript-book/:/home/pureuser/src b09608732ec8 bash
64 pureuser@1ddb0b0ed568:~$ ls
65 src tmp
66 pureuser@1ddb0b0ed568:~$ cd src/
67 pureuser@1ddb0b0ed568:~/src$ ls
68 CONTRIBUTING.md README.md chapter11 chapter13 chapter2 chapter4 chapter6 chapter8
69 LICENSE.md chapter10 chapter12 chapter14 chapter3 chapter5 chapter7 chapter9
70 pureuser@1ddb0b0ed568:~/src$ cd chapter3/
71 pureuser@1ddb0b0ed568:~/src/chapter3$ bower install
72 pureuser@1ddb0b0ed568:~/src/chapter3$ pulp build
73 ```
74
75 It should have built successfully. You can also run the tests:
76
77 ```
78 pureuser@1ddb0b0ed568:~/src/chapter3$ pulp test
79 * Build successful.
80 * Running tests...
81 Nothing
82 Just ("Smith, John: 123 Fake St., Faketown, CA")
83 * Tests OK.
84 ```
85
86 Since you mounted the volume, you can actually edit the code outside of the running docker instance and it will update inside the container!
87
88 Open up `chapter3/test/Main.purs` using your favorite editor, and update `example.address.street` in the `example` record to `"123 Foobar St."`. Now rerun the tests, and you'll see that it updated!
89
90 ```
91 pureuser@1ddb0b0ed568:~/src/chapter3$ pulp test
92 * Build successful.
93 * Running tests...
94 Nothing
95 Just ("Smith, John: 123 Foobar St., Faketown, CA")
96 * Tests OK.
97 ```
98
99 This docker image creates a user called `pureuser` that it logs in as so that `bower` and `pulp` don't yell at you. If you want to add more stuff as you go along, switch to the superuser (`su`), or add pureuser to sudoers.