Créer un environnement de développement PureScript avec Docker

introduction

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

Environnement de vérification

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

Structure du répertoire

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"]

Construire l'image

$ 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

Créer un projet

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

Construire

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.

Courir

Si la construction réussit, exécutez-la avec la commande suivante

$ docker-compose run --rm app spago run

Hello, PureScript

référence

Recommended Posts

Créer un environnement de développement PureScript avec Docker
Créer un environnement de développement Wordpress avec Docker
Créez rapidement un environnement de développement WordPress avec Docker
Créer un environnement Node.js avec Docker
Construction d'un environnement de développement simple Docker + Django
Créer un environnement de développement pour Docker + Rails6 + Postgresql
Créer un environnement Laravel / Docker avec VSCode devcontainer
Construction de l'environnement de développement Simple Docker Compose + Django
Créer un environnement Docker avec WSL
[Win10] Créer un environnement de développement JSF avec NetBeans
Créer un environnement de développement pour Django + MySQL + nginx avec Docker Compose
Créer un environnement de développement pour Docker, Java, vs code
Créer un environnement de développement Spring Boot avec docker
Créer un environnement de développement Java avec VS Code
[Copier et coller] Créez un environnement de développement Laravel avec Docker Compose, partie 2
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 6.x)
Créez un environnement de développement local pour les didacticiels Rails avec Docker (Rails 6 + PostgreSQL + Webpack)
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 5.x)
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Ubuntu)
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Mac)
[Note] Créez un environnement Python3 avec Docker dans EC2
Essayez de créer un environnement de développement Java à l'aide de Docker
Créez un environnement Vue3 avec Docker!
Créer un environnement local Couchbase avec Docker
Créer un environnement Tomcat 8.5 avec Pleiades 4.8
Créer un environnement de développement Jooby avec Eclipse
Créer un environnement de développement Unity sur docker
Créez un environnement Docker + Laravel avec Laradock
Créez un environnement de développement pour créer des applications Ruby on Jets + React avec Docker
J'ai créé un environnement de développement avec rails6 + docker + postgreSQL + Materialise.
Créez un environnement de développement «Spring Thorough Introduction» avec IntelliJ IDEA
J'ai essayé de créer un environnement de développement padrino avec Docker
[Rails] [Docker] Le copier-coller est OK! Comment créer un environnement de développement Rails avec Docker
Créer un environnement d'exécution WAS à partir de Docker
Créer un environnement de développement Spring Boot-gradle-mysql avec Docker
Créer un environnement de développement Java sur Mac
Comment quitter Docker pour Mac et créer un environnement de développement Docker avec Ubuntu + Vagrant
[Docker] Construisez l'environnement d'exécution de Jupyter Lab avec Docker
Créer un environnement avec Docker sur AWS
Créer un environnement de développement Ultra96v2 sur Docker 1
Créer un environnement de vérification des opérations TensorFlow avec Docker
Comment créer un environnement Rails 6 avec Docker
Créer un environnement de développement Go avec WSL2 + Docker Desktop + VSCode (Remote --Containers)
Procédure de création d'un environnement de développement d'applications Rails avec Docker [Rails, MySQL, Docker]
Créer un environnement de test de navigateur à l'aide de Capybara dans l'environnement de développement Docker
Étapes pour créer un environnement de développement Ruby on Rails avec Vagrant