L'autre jour, j'ai pu exécuter spago repl
sur le conteneur Docker, donc cette fois je vais vérifier la construction et l'exécution du projet créé avec spago init
Exécution de PureScript sur Docker Container-Qiita
Windows10 Home Edition
VirtualBox 6.1.16
docker-machine.exe version 0.16.1, build cce350d7
# Docker Host OS (CoreOS)
$ uname -a
Linux default 4.14.154-boot2docker #1 SMP Thu Nov 14 19:19:08 UTC 2019 x86_64 GNU/Linux
Docker version 19.03.5, build 633a0ea838
docker-compose version 1.26.0, build d4451659
Préparez docker-compose.yml
, Dockerfile
et myapp
dans le dossier vide du dossier purescript
.
purescript
├── docker-compose.yml
├── Dockerfile
└── myapp
docker-compose.yml
docker-compose.yml
version: "3.7"
services:
purescript:
build:
context: .
dockerfile: Dockerfile
target: "purescript"
image: takaya030/purescript
command: "true"
app:
build:
context: .
dockerfile: Dockerfile
target: "pure-app"
image: takaya030/pure-app
volumes:
- ./myapp:/home/pureuser/myapp
working_dir: /home/pureuser/myapp
command: "spago run"
Dockerfile
Dockerfile
FROM node:12 as purescript
LABEL maintainer "takaya030"
# install purescript
RUN npm install --global --unsafe-perm purescript spago
# add user
RUN userdel node && \
useradd -m -s /bin/bash pureuser
WORKDIR /home/pureuser
USER pureuser
RUN mkdir tmp && cd tmp && spago init
CMD cd tmp && spago repl
#=========================================
FROM purescript as pure-app
COPY ./myapp /home/pureuser/myapp
WORKDIR /home/pureuser/myapp
CMD ["spago","run"]
$ cd purescript
$ docker-compose build purescript
$ docker-compose build app
Vérifiez l'image
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
takaya030/pure-app latest c018082fc97b 27 hours ago 1.08GB
takaya030/purescript latest fb50aeb56d04 2 days ago 1.08GB
node 12 1f560ce4ce7e 5 weeks ago 918MB
Exécutez la commande suivante pour créer un projet initial dans le dossier myapp
$ docker-compose run --rm app spago init
Structure des fichiers de projet
$ ls -l myapp
total 4
-rwxrwxrwx 1 docker staff 2903 Nov 16 09:53 packages.dhall
-rwxrwxrwx 1 docker staff 231 Nov 16 09:53 spago.dhall
drwxrwxrwx 1 docker staff 0 Nov 16 09:57 src
drwxrwxrwx 1 docker staff 0 Nov 16 09:53 test
Dans mon environnement, les pictogrammes de l'exemple de programme sont déformés, je l'ai donc changé comme suit
myapp/src/Main.purs
module Main where
import Prelude
import Effect (Effect)
import Effect.Console (log)
main :: Effect Unit
main = do
log "Hello, PureScript"
Construire avec la commande suivante
$ docker-compose run --rm app spago build
[info] Build succeeded.
Si la construction réussit, exécutez-la avec la commande suivante
$ docker-compose run --rm app spago run
Hello, PureScript