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
4
apk update && apk upgrade && \5
apk --no-cache add make gcc libc-dev && \6
apk add --update --no-cache \7
build-base curl-dev git libxslt-dev libxml2-dev ruby-rdoc mysql-dev \8
yaml-dev zlib-dev nodejs yarn tzdata13
RUN gem install nokogiri -- --use-system-libraries14
RUN gem install bundler16
COPY package.json yarn.lock ./17
RUN yarn install --check-files19
COPY Gemfile Gemfile.lock ./25
RUN rm -rf /var/cache/apk/*30
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.
4
container_name: rails_project_backend5
command: ["rails", "server", "-b", "0.0.0.0"]10
dockerfile: .docker/Dockerfile16
- "node-modules:/app/node_modules"18
RAILS_ENV: development20
DATABASE_USER: rails_db_user21
DATABASE_PASSWORD: rails_db_password22
DATABASE_NAME: rails_db24
container_name: rails_project_db27
MYSQL_ROOT_PASSWORD: password28
MYSQL_DATABASE: rails_db29
MYSQL_USER: rails_db_user30
MYSQL_PASSWORD: rails_db_password32
- './dbdocker:/var/lib/mysql'33
- './dbdocker_init:/docker-entrypoint-initdb.d'39
image: phpmyadmin/phpmyadmin47
MYSQL_ROOT_PASSWORD: password
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.
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.