Il est difficile de créer un docker et un docker-composer une fois tout en faisant référence à ceux d'autres personnes, puis de recommencer lorsque vous souhaitez créer une application avec les mêmes paramètres. Donc, je vais télécharger l'image que j'ai faite sur docker-hub afin que je puisse facilement la dupliquer. Cette fois, j'utiliserai l'image créée par les rails 6.0.3 et mysql8.0.2. (Référence: https://qiita.com/shima-zu/items/b825c5a47b3582ef99cc)
Tout d'abord, vérifiez l'ID de conteneur utilisé sur docker-compose et créez une image à transférer de cet ID de conteneur vers docker-hub.
Entrez cette commande dans le terminal pour récupérer l'état du conteneur.
macbook-pro rails_app % docker ps -a
Résultat de sortie
51334eee76eb rails_app_web "entrypoint.sh bash …" 2 days ago Up 31 minutes 0.0.0.0:3000->3000/tcp rails_app_web_1
40f92b2d8ed5 mysql:8.0.20 "docker-entrypoint.s…" 2 days ago Up 31 minutes 33060/tcp, 0.0.0.0:3307->3306/tcp rails_app_db_1
Deux conteneurs sont utilisés, ID = 51334eee76eb
Name = rails_app_web
, ID = 40f92b2d8ed5
, Name = mysql: 8.0.20
. Au fait, mysql: 8.0.20
équivaut à tag.
Pour pousser vers le docker hub, le nom de l'image doit inclure le nom d'utilisateur, donc créez une nouvelle image.
tag
Pour mysql, entrez tag = `8.0.20`.
Si le tag n'est pas spécifié, le dernier sera défini automatiquement.
Et enfin, poussez l'image vers le hub docker.
`docker push Username/ImageName:tag`
Vous pouvez pousser avec.
Maintenant, tirez l'image d'ici, créez un conteneur et allez au point où vous émettez Yay! You are on Rails!.
Tout d'abord, définissez le répertoire de travail et déplacez-le.
`mkdir /docker-rails
cd docker-rails`
Tirez l'image.
`docker pull Username/rails_app_web`
`docker pull Username/mysql`
Créez les fichiers requis.
` touch { docker-compose.yml, Gemfile, Gemfile.lock, entrypoint.sh, .env }`
Si vous ne supprimez pas la construction de docker-compose.yml et changez le numéro de port, vous obtiendrez une erreur indiquant que le port est déjà pris, alors soyez prudent.
`docker-compose run --rm web rails new . --force --no-deps --database=mysql --skip-turbolinks`
Créez rails-app dans le dossier et réinstallez webpacker.
`docker-compose run --rm web bin/rails webpacker:install`
Collez database.yml de la même manière pour créer la base de données.
`docker-compose run --rm web bin/rails db:create`
Enfin, lancez le conteneur en arrière-plan et vous avez terminé.
`docker-compose up -d`