Bonjour,
Je teste Docker, docker-compose... en suivant ce guide https://docs.docker.com/compose/rails/#build-the-project
Je créé bien les différents fichier, Dockerfile, docker-compose.yml, Gemfile et Gemfile.lock.
Je lance un :
docker-compose run web rails new . --force --database=postgresql
Mais la j'ai cette erreur
ERROR: Cannot start service web: oci runtime error: container_linux.go:265: starting container process caused "exec: \"rails\": executable file not found in $PATH"
Si quelqu'un peut m'expliquer pourquoi :)
Je suppose qu'en installant Rails sur ma machine cela fonctionnerait mais le principe de docker n'est-il pas de ne pas avoir besoin d'installer des langages sur sa machine ?
Je suis sous Mac au cas ou, si jamais ca change qq chose.
Merci :)
Salut !
J'ai bien galéré moi aussi pour me faire un environement de dev sous docker, voici ma version qui me parait plutôt pas mal :)
Dockerfile
# On part d'une image ruby
FROM ruby:2.3.1
# On ajoute nodejs
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
# On installe quelques paquets essentiels
RUN apt-get install -y build-essential libpq-dev nodejs libmysqlclient-dev
# On monte un dossier pour notre application
ENV app /app
RUN mkdir $app
# On défini l'espace de travail
WORKDIR $app
# On monte un autre volume pour stocker les gems pour plus de rapidité lors des prochains builds
ENV BUNDLE_PATH /box
# On importe le projet
ADD . $app
# On démarre le serveur une première fois
CMD rails s -b 0.0.0.0
docker-compose.yml
version: '2'
services:
database:
image: mysql:5.7
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: app
MYSQL_USER: app
MYSQL_PASSWORD: app
app:
build: .
command: ./startup.sh
links:
- database
ports:
- "3000:3000"
user: "1000:1000"
volumes:
- .:/app
volumes_from:
- box
environment:
DB_NAME: app
DB_USER: app
DB_PASSWORD: app
DB_HOST: database
box:
image: busybox
volumes:
- ~/.busybox:/box
Et un script de démarrage placé a la racine du projet (sans oublier de le rendre executable "chmod +x startup.sh") :
startup.sh
#!/bin/bash
# On teste l'installation des gems, on en installe si besoin
bundle check || bundle install
# Démarrage du serveur
bundle exec rails s -b 0.0.0.0
Voila, j'espère t'avoir aidé !