 
 Rails 6: Execution de Docker avec PHPMyAdmin
Depuis WSL est arrivé à Windows, je veux pratiquer dans une application en Rails. Ça était seulement amusant pour pratiquer mes habiletés en Docker. L’unique exigence? Utiliser Alpine Linux, très populaire par le petit lourd d’images qui génère.
Après deux heures de douleur et de souffrance, je l’ai fait. Mes conteneurs Docker fonctionnaient comment je le voulais et ensuite, je suis prêt pour travailler. Je vous présente ici tous les fichiers.
🐳 Dockerfile
 En premier lieu, j’ai créé le fichier Dockerfile pour le conteneur de Ruby. La route est .docker/Dockerfile 
FROM ruby:2.7.2-alpineRUN \    # Mise à jour    apk update && apk upgrade && \    apk --no-cache add make gcc libc-dev && \    apk add --update --no-cache \    build-base curl-dev git libxslt-dev libxml2-dev ruby-rdoc mysql-dev \    yaml-dev zlib-dev nodejs yarn tzdata
WORKDIR /app
# Gems obligatoiresRUN gem install nokogiri -- --use-system-librariesRUN gem install bundler
COPY package.json yarn.lock ./RUN yarn install --check-files
COPY Gemfile Gemfile.lock ./RUN bundle install
COPY . .
# Effacer les packages après l'installationRUN rm -rf /var/cache/apk/*
ENV PATH=./bin:$PATH
EXPOSE 3000CMD ["rails", "console"]📦 Docker compose
 Après cela, on peut créer notre fichier docker-compose.yml. Pour ce cas, on utilise un combo de Ruby + MySQL 8.0 + PHPMyAdmin. Tu demandes probablement: et pourquoi PHPMyAdmin? Parce que je n’ai pas un autre outil UI SQL dans mon ordinateur Linux et je ne veux pas utiliser le terminal maintenant. 
version: '3'services:  app:    container_name: rails_project_backend  command: ["rails", "server", "-b", "0.0.0.0"]    depends_on:      - db    build:      context: .      dockerfile: .docker/Dockerfile    ports:      - "3000:3000"    restart: always    volumes:    - ".:/app"    - "node-modules:/app/node_modules"    environment:      RAILS_ENV: development      DATABASE_HOST: db      DATABASE_USER: rails_db_user      DATABASE_PASSWORD: rails_db_password    DATABASE_NAME: rails_db  db:    container_name: rails_project_db    image: "mysql:8.0"    environment:      MYSQL_ROOT_PASSWORD: password      MYSQL_DATABASE: rails_db      MYSQL_USER: rails_db_user      MYSQL_PASSWORD: rails_db_password    volumes:      - './dbdocker:/var/lib/mysql'      - './dbdocker_init:/docker-entrypoint-initdb.d'    ports:      - "3306:3306"  phpmyadmin:    depends_on:      - db    image: phpmyadmin/phpmyadmin    restart: always    ports:      - '3500:80'    environment:      PMA_HOST: db      PMA_PORT: 3306      MYSQL_USER: root      MYSQL_ROOT_PASSWORD: passwordvolumes:  node-modules:Dans le conteneur PHPMyAdmin, on a besoin de mot de passe pour l’utiliser root, parce qu’on veut exécuter des opérations de haut niveau en notre base de données.
 Les dossiers supplémentaires dbdocker et dbdocker_init , tu les peux ajouter à votre projet si tu veux exécuter des commandes dans ton conteneur MySQL. Pas oublier qu’une fois ils sont ajoutés, tu dois les ignorer depuis Git, où les fichiers de la base de données resteront. C’est une bonne pratique créer un ficher vide .gitkeep ou .keep dans le dossier et de l’ignorer. Ensuite, la règle que j’utilise dans mon .gitignore. 
/dockerdb/*!/dockerdb/.gitkeepN’oublier pas que tu peux utiliser un fichier .env et ensuite ajouter
env_file: - .envà ton fichier docker-compose (si tu supprimes la section environment par conteneur, avant), si tu ne veux pas envoyer des commits avec tes valeurs env ou si tu les changes souvent.
 
  
 