Rails 6: Execution de Docker avec PHPMyAdmin

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-alpine
RUN \
# 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 obligatoires
RUN gem install nokogiri -- --use-system-libraries
RUN 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'installation
RUN rm -rf /var/cache/apk/*
ENV PATH=./bin:$PATH
EXPOSE 3000
CMD ["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: password
volumes:
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/.gitkeep

N’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.

Mes articles ne sont pas generés par l'IA, cependant ils pourrait y être corrigés. Le premier brouillon est ma création originale

Tags

Auteur

Écrit par Helmer Davila

Dans d'autres langues

Rails 6 + MySQL + PHPMyAdmin

Rails 6: corriendo sobre Docker con PHPMyAdmin

Rails 6 + MySQL + PHPMyAdmin

Rails 6: Running on Docker with PHPMyAdmin

Articles connexes

En utilisant Docker pour créer des environnements dans des conteneurs

Rails 7 avec Ruby 3, MySQL 8 et Redis sur Docker Alpine

Emmène ton appli au niveau supérieur, sans JavaScript

Hotwire Turbo: Drive, Frames et Streams pour des projets en Ruby on Rails