Dans ce tutoriel, nous allons voir comment configurer Docker et Docker Compose pour le développement local de Ruby on Rails.
TL;DR : si vous ne voulez pas lire toute l'histoire, nous avons créé plusieurs gists pour vous. Il vous suffit de suivre les instructions dans leur README :
Ce tutoriel ne couvrira pas comment installer Docker sur votre ordinateur. Vous pouvez vous référer à la documentation officielle de Docker.
Objectif
Nous voulons avoir un environnement de développement Ruby on Rails standard et homogène, isolé de tous nos autres projets de développement.
Cet environnement de développement doit également inclure webpack-dev-server en tant qu'environnement de test.
Il doit être possible de l'étendre avec une base de données.
Nous voulons exécuter notre code source Ruby on Rails local à l'intérieur d'un conteneur Docker, quelle que soit la version de Ruby ou de Rails.
Nous voulons une configuration Docker Compose pour exécuter notre conteneur d'application, webpack-dev-server, notre suite de tests et les bases de données.
Avantages
Il y a de nombreux avantages à utiliser Docker et Docker Compose pour la configuration d'un environnement de développement local.
Pour chacun de nos projets, nous pouvons spécifier d'une manière très simple :
une version exacte de Ruby
une version exacte de Rails
une version exacte du moteur de base de données
De plus, chacun de nos projets sera complètement isolé :
changer une version mineure ou majeure du langage, du framework, des bibliothèques ou du moteur de base de données ne perturbera pas nos autres projets de développement
nous pouvons avoir des dépendances logicielles spécifiques liées à un projet particulier à l'intérieur d'un conteneur sans conséquences sur nos autres projets
Et parce que nous pouvons spécifier clairement chaque version de notre pile, nous serons plus proches de la parité dev/prod.
Enfin, nous pouvons complètement rationaliser la configuration de l'environnement de développement local : il est plus facile d'intégrer de nouveaux développeurs dans nos projets ou simplement de revenir à des projets que nous n'avons pas touchés depuis des mois ou des années.
Étape 0 : Création de la structure des fichiers {#step-0}
D'abord, nous créons le répertoire qui accueillera notre code source et créons trois fichiers vides Dockerfile, docker-compose.yml et entrypoint.sh.
mkdir my-new-app
cd my-new-app
touch Dockerfile
touch docker-compose.yml
touch
mkdir my-new-app
cd my-new-app
touch Dockerfile
touch docker-compose.yml
touch
mkdir my-new-app
cd my-new-app
touch Dockerfile
touch docker-compose.yml
touch
mkdir my-new-app
cd my-new-app
touch Dockerfile
touch docker-compose.yml
touch
Le Dockerfile est là pour instruire Docker sur la façon de construire un conteneur à partir de notre code source et le docker-compose.yml est là pour indiquer comment exécuter plusieurs conteneurs, y compris notre conteneur d'application. Nous aborderons le fichier entrypoint.sh plus tard.
Étape 1 : Copier Dockerfile {#step-1}
Il existe de nombreuses possibilités pour créer une image de conteneur Docker. La manière la plus simple et la plus flexible est d'écrire un Dockerfile.
Un Dockerfile est un fichier texte très simple qui décrit les différentes étapes à suivre pour construire une image Docker.
Chaque ligne du Dockerfile est une étape de la recette commençant par un mot clé spécial appelé commande.
Dans notre Dockerfile, nous allons utiliser seulement 6 commandes :
FROM : spécifier une image Docker externe que nous allons utiliser comme couche de base
RUN : exécuter une commande dans le cadre de notre conteneur
ENV : construire une variable d'environnement
WORKDIR : spécifier le répertoire de base dont dépendent toutes les autres commandes
COPY : copiera un fichier de notre système de fichiers local dans le conteneur
ENTRYPOINT : indiquera comment démarrer notre conteneur Docker
Voici le Dockerfile que nous allons utiliser pour tous nos projets Ruby on Rails. N'ayez pas peur, nous ferons une analyse ligne par ligne ci-dessous !
FROM ruby:3.0.1
ARG USER_ID
ARG GROUP_ID
RUN addgroup --gid $GROUP_ID user
RUN adduser --disabled-password --gecos '' --uid $USER_ID --gid $GROUP_ID user
RUN apt-get update -qq
ENV GEM_HOME="/usr/src/app/bundle"
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
RUN apt-get update -qq
RUN apt-get install -y nodejs
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq
RUN apt-get install -y yarn
WORKDIR /usr/src/app
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
USER $USER_ID
ENTRYPOINT ["entrypoint.sh"
FROM ruby:3.0.1
ARG USER_ID
ARG GROUP_ID
RUN addgroup --gid $GROUP_ID user
RUN adduser --disabled-password --gecos '' --uid $USER_ID --gid $GROUP_ID user
RUN apt-get update -qq
ENV GEM_HOME="/usr/src/app/bundle"
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
RUN apt-get update -qq
RUN apt-get install -y nodejs
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq
RUN apt-get install -y yarn
WORKDIR /usr/src/app
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
USER $USER_ID
ENTRYPOINT ["entrypoint.sh"
FROM ruby:3.0.1
ARG USER_ID
ARG GROUP_ID
RUN addgroup --gid $GROUP_ID user
RUN adduser --disabled-password --gecos '' --uid $USER_ID --gid $GROUP_ID user
RUN apt-get update -qq
ENV GEM_HOME="/usr/src/app/bundle"
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
RUN apt-get update -qq
RUN apt-get install -y nodejs
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq
RUN apt-get install -y yarn
WORKDIR /usr/src/app
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
USER $USER_ID
ENTRYPOINT ["entrypoint.sh"
FROM ruby:3.0.1
ARG USER_ID
ARG GROUP_ID
RUN addgroup --gid $GROUP_ID user
RUN adduser --disabled-password --gecos '' --uid $USER_ID --gid $GROUP_ID user
RUN apt-get update -qq
ENV GEM_HOME="/usr/src/app/bundle"
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
RUN apt-get update -qq
RUN apt-get install -y nodejs
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq
RUN apt-get install -y yarn
WORKDIR /usr/src/app
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
USER $USER_ID
ENTRYPOINT ["entrypoint.sh"
Analyse de notre Dockerfile
Nous allons prendre l'image Docker Ruby officielle. Comme nous voulons utiliser Ruby 3.0.1, nous allons baser notre image Docker sur la version Docker 3.0.1. La balise de version de l'image Docker est la même que la version du langage Ruby.
Comme notre objectif est d'installer des gems, nous allons indiquer à notre conteneur Docker où stocker le code source de nos gems. Le GEM_HOME va indiquer à bundle où stocker les gems. Ici, nous souhaitons que le code source des gems soit installé dans le répertoire bundle. Nous verrons ci-dessous où ce répertoire bundle sera réellement stocké sur notre système de fichiers local.
ENV GEM_HOME="/usr/src/app/bundle"
ENV GEM_HOME="/usr/src/app/bundle"
ENV GEM_HOME="/usr/src/app/bundle"
ENV GEM_HOME="/usr/src/app/bundle"
Et bien sûr, nous voulons que les binstubs des gems soient disponibles dans le chemin standard à l'intérieur de notre conteneur :
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
Les images Docker Ruby officielles sont basées sur Ubuntu. Nous pouvons utiliser les outils standard d'Ubuntu. Tout d'abord, nous aimerions mettre à jour la base de données d'informations sur les paquets. L'option -qq est là pour afficher uniquement les messages d'erreur.
Comme Rails a besoin que node soit installé, nous pouvons l'installer avec le paquet Ubuntu correspondant.
RUN apt-get install -y nodejs
RUN apt-get install -y nodejs
RUN apt-get install -y nodejs
RUN apt-get install -y nodejs
Les versions récentes de Rails installent le gem webpacker qui nécessite que yarn soit installé. Voici une méthode pour installer yarn depuis le dépôt officiel Debian/Ubuntu fourni par yarn.
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update
RUN apt-get install -y
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update
RUN apt-get install -y
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update
RUN apt-get install -y
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update
RUN apt-get install -y
Nous voulons spécifier que notre répertoire de travail de base sera /usr/src/app.
Enfin, nous ajoutons un script à exécuter chaque fois que le conteneur démarre.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"
Étape 2 : Copier docker-compose.yml {#step-2}
Docker Compose est un outil pour exécuter plusieurs conteneurs Docker en parallèle.
Un simple fichier texte au format YAML appelé docker-compose.yml est nécessaire pour indiquer à Docker Compose comment exécuter plusieurs conteneurs Docker appelés services.
Voici le fichier docker-compose.yml que nous allons utiliser. Nous allons commencer par une configuration très simple.
version: "2"
services:
web:
build: .
ports:
- 3000:3000
volumes:
- ./:/usr/src/app
command
version: "2"
services:
web:
build: .
ports:
- 3000:3000
volumes:
- ./:/usr/src/app
command
version: "2"
services:
web:
build: .
ports:
- 3000:3000
volumes:
- ./:/usr/src/app
command
version: "2"
services:
web:
build: .
ports:
- 3000:3000
volumes:
- ./:/usr/src/app
command
Analyse de notre docker-compose.yml
À faire
Étape 3 : Copier entrypoint.sh {#step-3}
À faire
Étape 4 : Initialiser notre nouvelle application Rails {#step-4}
Maintenant que nous avons configuré notre Docker, en utilisant la version exacte de Ruby dont nous avons besoin pour ce projet, il est temps de les exécuter !
Tout d'abord, nous aimerions exécuter une commande bash à l'intérieur de notre conteneur d'application pour installer Ruby on Rails.
docker-compose run web bash
docker-compose run web bash
docker-compose run web bash
docker-compose run web bash
Nous exécutons maintenant un terminal bash à l'intérieur de notre conteneur d'application en cours d'exécution.
Nous pouvons maintenant procéder à l'installation de Rails.
Le gem et toutes ses dépendances seront installés dans notre répertoire bundle local.
Une fois terminé, nous pouvons créer la structure de notre application :
Chaque fois que vous devez sortir d'un conteneur Docker en cours d'exécution, vous pouvez taper exit puis appuyer sur ENTER ou taper CTRL+D.
Lancer la commande docker-compose run web command est notre solution de prédilection pour exécuter toute commande dans notre conteneur en cours d'exécution. Vous pouvez l'utiliser pour exécuter un terminal bash comme décrit ci-dessus, exécuter une commande bundle comme docker-compose run web bundle install devise ou une commande yarn comme docker-compose run web yarn install @hotwired/turbo-rails.
Étape 5 : Démarrer notre pile locale {#step-5}
Vous pouvez lancer docker-compose up et visiter http//localhost:3000 dans votre navigateur.
Lancer la commande docker-compose up est notre solution de prédilection pour démarrer tout projet Rails utilisant la configuration Docker et Docker Compose utilisée dans ce tutoriel.
Voilà, nous avons maintenant un environnement de développement Rails local fonctionnel utilisant Docker !
Étape 6 : Configurer webpack-dev-server {#step-6}
Les versions récentes de Rails nécessitent webpack. La compilation des actifs en direct se fait avec un démon appelé webpack-dev-server.
Nous allons l'ajouter en tant que nouveau service dans notre fichier docker-compose.yml qui ressemblera à ce qui suit :
version: "2"
services:
web:
build: .
ports:
- 3000:3000
volumes:
- ./:/usr/src/app
links:
- webpack
command: bundle exec rails server -b 0.0.0.0 -p 3000 -e development
webpack:
build: .
ports:
- 3035:3035
volumes:
- ./:/usr/src/app
command: ./bin/webpack-dev-server
environment:
WEBPACK_HOST: "172.17.0.1:3035"version: "2"
services:
web:
build: .
ports:
- 3000:3000
volumes:
- ./:/usr/src/app
links:
- webpack
command: bundle exec rails server -b 0.0.0.0 -p 3000 -e development
webpack:
build: .
ports:
- 3035:3035
volumes:
- ./:/usr/src/app
command: ./bin/webpack-dev-server
environment:
WEBPACK_HOST: "172.17.0.1:3035"version: "2"
services:
web:
build: .
ports:
- 3000:3000
volumes:
- ./:/usr/src/app
links:
- webpack
command: bundle exec rails server -b 0.0.0.0 -p 3000 -e development
webpack:
build: .
ports:
- 3035:3035
volumes:
- ./:/usr/src/app
command: ./bin/webpack-dev-server
environment:
WEBPACK_HOST: "172.17.0.1:3035"version: "2"
services:
web:
build: .
ports:
- 3000:3000
volumes:
- ./:/usr/src/app
links:
- webpack
command: bundle exec rails server -b 0.0.0.0 -p 3000 -e development
webpack:
build: .
ports:
- 3035:3035
volumes:
- ./:/usr/src/app
command: ./bin/webpack-dev-server
environment:
WEBPACK_HOST: "172.17.0.1:3035"De plus, comme webpack-dev-server s'exécutera dans un conteneur séparé de notre conteneur d'application normal, nous devrons le lier à 0.0.0.0 ce qui signifie sur toutes les interfaces réseau. De cette façon, il sera accessible de l'extérieur de son conteneur.
Dans config/webpacker.yml, remplacez la clé development/dev_server/host par la valeur 0.0.0.0 (localhost est la valeur par défaut et nous ne la voulons pas).
Maintenant, stoppez la pile, reconstruisez-la et relancez-la.
Nous avons maintenant une flotte de 2 conteneurs en cours d'exécution : un conteneur exécutant notre code source Rails et un conteneur exécutant webpack-dev-server.
Étape 7 : Ajouter une base de données PostgreSQL à notre pile locale {#step-7-alt1}
FROM ruby:3.0.1
RUN apt-get update
ENV GEM_HOME="/usr/src/app/bundle"
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
RUN apt-get update -qq
RUN apt-get install -y postgresql-client
RUN apt-get install -y nodejs
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq
RUN apt-get install -y yarn
WORKDIR /usr/src/app
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"
FROM ruby:3.0.1
RUN apt-get update
ENV GEM_HOME="/usr/src/app/bundle"
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
RUN apt-get update -qq
RUN apt-get install -y postgresql-client
RUN apt-get install -y nodejs
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq
RUN apt-get install -y yarn
WORKDIR /usr/src/app
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"
FROM ruby:3.0.1
RUN apt-get update
ENV GEM_HOME="/usr/src/app/bundle"
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
RUN apt-get update -qq
RUN apt-get install -y postgresql-client
RUN apt-get install -y nodejs
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq
RUN apt-get install -y yarn
WORKDIR /usr/src/app
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"
FROM ruby:3.0.1
RUN apt-get update
ENV GEM_HOME="/usr/src/app/bundle"
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
RUN apt-get update -qq
RUN apt-get install -y postgresql-client
RUN apt-get install -y nodejs
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update -qq
RUN apt-get install -y yarn
WORKDIR /usr/src/app
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"
La première chose à faire sera d'ajouter une nouvelle entrée dans la section services de notre fichier docker-compose.yml qui ressemblera désormais à ce qui suit :
version: "2"
services:
web:
build: .
volumes:
- .:/usr/src/app:rw
environment:
DATABASE_URL: postgresql://admin:admin-secret@postgresql:5432/my_new_app_development
WEBPACKER_DEV_SERVER_HOST: 172.17.0.1
links:
- postgresql
- webpack
ports:
- 3000:3000
command: bundle exec rails server -b 0.0.0.0 -p 3000 -e development
webpack:
build: .
ports:
- 3035:3035
volumes:
- ./:/usr/src/app
command: ./bin/webpack-dev-server
environment:
WEBPACK_HOST: "172.17.0.1:3035"
specs:
build: .
volumes:
- ./:/usr/src/app/
environment:
DATABASE_URL_TEST: postgresql://admin:admin-secret@postgresql:5432/my_new_app_test
RAILS_ENV: test
SMTP_URL: smtp://hello%40localhost@localhost
links:
- postgresql
command: "tail -F /dev/null"
postgresql:
image: scalingo/postgresql:12.2.0-6
ports:
- 5432:5432
environment:
DB_UID: 1000
volumes:
- ./docker/postgresql-data:/var/lib/postgresql:rw
command
version: "2"
services:
web:
build: .
volumes:
- .:/usr/src/app:rw
environment:
DATABASE_URL: postgresql://admin:admin-secret@postgresql:5432/my_new_app_development
WEBPACKER_DEV_SERVER_HOST: 172.17.0.1
links:
- postgresql
- webpack
ports:
- 3000:3000
command: bundle exec rails server -b 0.0.0.0 -p 3000 -e development
webpack:
build: .
ports:
- 3035:3035
volumes:
- ./:/usr/src/app
command: ./bin/webpack-dev-server
environment:
WEBPACK_HOST: "172.17.0.1:3035"
specs:
build: .
volumes:
- ./:/usr/src/app/
environment:
DATABASE_URL_TEST: postgresql://admin:admin-secret@postgresql:5432/my_new_app_test
RAILS_ENV: test
SMTP_URL: smtp://hello%40localhost@localhost
links:
- postgresql
command: "tail -F /dev/null"
postgresql:
image: scalingo/postgresql:12.2.0-6
ports:
- 5432:5432
environment:
DB_UID: 1000
volumes:
- ./docker/postgresql-data:/var/lib/postgresql:rw
command
version: "2"
services:
web:
build: .
volumes:
- .:/usr/src/app:rw
environment:
DATABASE_URL: postgresql://admin:admin-secret@postgresql:5432/my_new_app_development
WEBPACKER_DEV_SERVER_HOST: 172.17.0.1
links:
- postgresql
- webpack
ports:
- 3000:3000
command: bundle exec rails server -b 0.0.0.0 -p 3000 -e development
webpack:
build: .
ports:
- 3035:3035
volumes:
- ./:/usr/src/app
command: ./bin/webpack-dev-server
environment:
WEBPACK_HOST: "172.17.0.1:3035"
specs:
build: .
volumes:
- ./:/usr/src/app/
environment:
DATABASE_URL_TEST: postgresql://admin:admin-secret@postgresql:5432/my_new_app_test
RAILS_ENV: test
SMTP_URL: smtp://hello%40localhost@localhost
links:
- postgresql
command: "tail -F /dev/null"
postgresql:
image: scalingo/postgresql:12.2.0-6
ports:
- 5432:5432
environment:
DB_UID: 1000
volumes:
- ./docker/postgresql-data:/var/lib/postgresql:rw
command
version: "2"
services:
web:
build: .
volumes:
- .:/usr/src/app:rw
environment:
DATABASE_URL: postgresql://admin:admin-secret@postgresql:5432/my_new_app_development
WEBPACKER_DEV_SERVER_HOST: 172.17.0.1
links:
- postgresql
- webpack
ports:
- 3000:3000
command: bundle exec rails server -b 0.0.0.0 -p 3000 -e development
webpack:
build: .
ports:
- 3035:3035
volumes:
- ./:/usr/src/app
command: ./bin/webpack-dev-server
environment:
WEBPACK_HOST: "172.17.0.1:3035"
specs:
build: .
volumes:
- ./:/usr/src/app/
environment:
DATABASE_URL_TEST: postgresql://admin:admin-secret@postgresql:5432/my_new_app_test
RAILS_ENV: test
SMTP_URL: smtp://hello%40localhost@localhost
links:
- postgresql
command: "tail -F /dev/null"
postgresql:
image: scalingo/postgresql:12.2.0-6
ports:
- 5432:5432
environment:
DB_UID: 1000
volumes:
- ./docker/postgresql-data:/var/lib/postgresql:rw
command
Étape 7 option : Ajouter une base de données MySQL à notre pile locale {#step-7-alt2}
Étape 7 option : Ajouter une base de données Redis à notre pile locale {#step-7-alt3}
FAQ
Comment démarrer ma pile locale ?
Comment arrêter ma pile locale ?
Comment exécuter une commande contre ma pile locale ?
Comment installer une gem ?
Comment installer un paquet yarn ?
Comment installer mimemagick ?
Comment installer des binaires externes comme wkhtmltopdf ?