Nous avons introduit Docker afin que les membres de l'équipe qui n'ont pas créé d'environnement Rails puissent facilement exécuter un projet localement sans avoir à créer un environnement. Puisque je construis l'environnement Rails localement, j'ai créé le projet localement afin que Docker et local direct puissent fonctionner. On suppose que Docker est déjà installé.
$ mkdir myapp; cd $_
$ rails new . --skip-coffee --skip-turbolinks --database=postgresql
En fonction de la variable d'environnement, vous pouvez choisir de l'exécuter avec Docker ou directement localement.
Gemfile
gem 'dotenv-rails'
Installer la gemme
$ bundle install
Voici un exemple de définition de variables d'environnement lors de l'exécution avec Docker.
.env
DATABASE_HOST=db
DATABASE_USER=postgres
DATABASE_PASSWORD=secret
Définissez DATABASE_HOST = localhost pour qu'il s'exécute directement localement.
docker-compose.yml
version: '3'
services:
  db:
    image: postgres
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
    ports:
      - "5433:5432"
    environment:
      POSTGRES_USER: 'postgres'
      POSTGRES_PASSWORD: 'secret'
      POSTGRES_DB: 'db'
  webpacker:
    build: .
    command: bundle exec bin/webpack-dev-server
    volumes:
      - .:/myapp
    ports:
      - "8080:8080"
  web:
    build: .
    command: /bin/sh -c "rm -f /myapp/tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
      - webpacker
dockerfile
FROM ruby:2.7.1
 
ENV LANG C.UTF-8
#Installez les bibliothèques requises
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
#installation de l'outil de gestion des paquets de fils
RUN apt-get update && apt-get install -y curl apt-transport-https wget && \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && apt-get install -y yarn
#Paramètres du répertoire de travail
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
EXPOSE  3000
Ajout des paramètres host, ʻusername et passwrd à database.yml`
/config/database.yml
:réduction
default: &default
  adapter: postgresql
  encoding: unicode
  host: <%= ENV.fetch("DATABASE_HOST") { "127.0.0.1" } %>               #Postscript
  username: <%= ENV.fetch("DATABASE_USER") { "postgres" } %>            #Postscript
  password: <%= ENV.fetch("DATABASE_PASSWORD") { "" } %>                #Postscript
  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
:réduction
$ docker-compose build
$ docker-compose run --rm web bin/yarn install
$ docker-compose run --rm web rails db:create
$ docker-compose up
Vous pouvez accéder à http: // localhost: 3000 /.
Editez .env et lancez-le avec yarn install, rails db: create, rails s.
Recommended Posts