[RUBY] Fehler beim Bereitstellen von Docker auf Schienen mit Notizen

dockerfile

FROM ruby:2.5.1
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN mkdir /myapp
ENV APP_ROOT /myapp
WORKDIR $APP_ROOT
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]

entrypoint.sh Direkt unter dem Projektverzeichnis

entrypoint.sh


#!/bin/bash
set -e

rm -f /myapp/tmp/pids/server.pid

exec "$@"

docker-compose-yml

docker-compose.yml


version: '3'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    tty: true
    stdin_open: true
    depends_on:
      - db
    ports:
      - "3000:3000"
    volumes:
      - .:/myapp:delegated
  db:
    image: mysql:5.7
    environment:
      MYSQL_USER: root
      MYSQL_ROOT_PASSWORD: password
    ports:
      - '3316:3306'
    volumes:
      - ./db/mysql/volumes:/var/lib/mysql

Docker-Befehl bezogen

#Containerliste(Einschließlich derjenigen, die gestoppt sind)
$ docker ps -a

#Container-ID-Liste
$ docker ps -a -q

#Container löschen
$ docker rm [Container ID]

#(Erzwungenes) Löschen von Containern
$ docker rm -f [Container ID]

#Geh in den Behälter
$ docker-compose exec web bash

#(1) Verlassen Sie den Behälter
$ exit
 
# (2)Raus aus dem Container
Ctrl + P + Q (Ohne den Behälter anzuhalten)

Unterschiede zwischen Docker-Compose-Build, Up, Start und Run

docker-compose build Erstellen Sie nur das Image, nicht den Container. Natürlich startet es den Container nicht

docker-compose up Wenn ein Image-Cache vorhanden ist, erstellen und starten Sie den Container von dort aus. Wenn kein Image-Cache vorhanden ist, erstellen Sie das Image mit build und erstellen / starten Sie den Container.

docker-compose start

Starten Sie ggf. bereits erstellte Container (Stoppen Sie den Container mit Docker-Compose-Stopp)

docker-compose run Führen Sie den Befehl im Container des durch das Argument angegebenen Dienstes aus

$ docker-compose run web rails s
$ docker-compose run web rails c

etc,,,,

Referenzseite für den Docker-Befehl

https://qiita.com/tegnike/items/bcdcee0320e11a928d46 [Rückwärtssuche des Docker-Compose-Befehls für Anfänger](https://qiita.com/okyk/items/a374ddb3f853d1688820 #) [Zusammenfassung der Docker-Compose-Befehle](https://qiita.com/wasanx25/items/d47caf37b79e855af95f#%E5%8F%82%E8%80%83%E3%83%AA%E3%83%B3%E3%82 % AF #)

Wenn der Docker langsam ist

[Mac Docker ist frei von langsamem Stress](https://qiita.com/ysKey2/items/346c429ac8dfa0aed892 #)

docker-compose.yml


#Beispiel
services:
  app:
    volumes:
      - .:/project/sample_app:delegated

Fehler aufgetreten

Autoprefixer doesn’t support Node v4.8.2.

web_1  | ActionView::Template::Error (Autoprefixer doesn’t support Node v4.8.2. Update it.):
web_1  |     3:   <head>
web_1  |     4:     <title><%= content_for?(:html_title) ? yield(:html_title) : "Japanepa.com" %></title>
web_1  |     5:     <%= csrf_meta_tags %>
web_1  |     6:     <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
web_1  |     7:     <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
web_1  |     8:     <%= Gon::Base.render_data %>
web_1  |     9:     <%= include_gon %>

Autoprefixer doesn’t support Node v4.8.2. "Das, was automatisch Vender-Präfixe hinzufügt, ist, dass der Gem namens Autoprefixer Node v4.8.2 nicht unterstützt."

1. Maßnahmen für Autoprefixer unterstützen Node v4.8.2 nicht.

Ruby on Rails - Autoprefixer doesn’t support Node v4.9.1. Update it. How to fix? Es scheint, dass es durch Einfügen eines Edelsteins namens "mini_racer" behoben werden kann.

2. Maßnahmen für Autoprefixer unterstützen Node v4.8.2 nicht.

Autoprefixer doesn’t support Node v4.8.2. Update it

#Vorher ändern
RUN apt-get update -qq \ && apt-get install -y nodejs postgresql-client

#Nach der veränderung
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/*

Your Ruby version is 2.5.8, but your Gemfile specified 2.5.1 Fehler verursacht durch andere Ruby-Version Gemfile und Dockerfile sagten jedoch:

source 'https://rubygems.org'
ruby '2.5.1'
FROM ruby:2.5.1

Gegenmaßnahmen für Ihre Ruby-Version sind 2.5.8, aber Ihre Gemfile hat 2.5.1 angegeben

Als ich nachgeschlagen habe, bestand die einzige Lösung darin, die Ruby-Versionen in Gemfile und Dockerfile abzugleichen. Treffen Sie daher die folgenden Gegenmaßnahmen

"Docker deinstallieren und neu installieren"

Tatsächlich hat dies das Problem gelöst, aber ich kann es nicht zu aggressiv empfehlen.

Später, während ich verschiedene Hafenarbeiter untersuche, spekuliere ich, dass die Ursache wie folgt sein könnte.
  1. Ich habe einen Container mit Ruby 2.5.8 gestartet, damit das Bild erhalten bleibt.
  2. Wenn Sie Docker-Compose erstellen, anstatt das in der Docker-Datei beschriebene 2.5.1-Image neu zu ziehen Ein Fehler ist aufgetreten, weil ein zuvor gezogenes Ruby 2.5.8-Bild verwendet wurde.

Ich bin mit Docker nicht sehr vertraut, aber wenn das Ruby-Bild gezogen wird, wird es unabhängig von der in der Docker-Datei beschriebenen Ruby-Version verwendet? ??

Ich habe den Unterschied zwischen Docker-Compose "up", "build" und "start" nicht verstanden, also habe ich sie zusammengefasst

Was ist ein Cache? Sobald Sie Docker erstellt haben, wird ein Cache erstellt. Wie Sie wissen, haben Google Chrome und andere Browser dieselbe Funktion. Wenn Sie einen Cache haben, können Sie ihn schnell verarbeiten, wenn Sie ihn ab dem zweiten Mal erstellen.

Es gibt jedoch Situationen, in denen es unpraktisch ist, einen Cache zu haben, z. B. beim Aktualisieren einer Docker-Datei. Wie oben beschrieben, verwendet Docker ohne die Option --no-cache den Cache, um das Image zu erstellen, sodass die aktualisierte Docker-Datei nicht angezeigt und kein neues Image erstellt wird.

Immerhin scheint ein Versionsunterschied aufgetreten zu sein, weil der Cache beim Starten des Containers mit dem vorherigen Ruby 2.5.8 erhalten geblieben ist.

Wenn Sie ein altes Rubinbild haben

Abhilfe 1

#Docker ohne Cache-compose.Ziehen Sie ein neues Bild mit der von yml angegebenen Ruby-Version

$ docker-compose build --no-cache

Abhilfe 2

Altes Bild löschen

#Zeigen Sie eine Liste der Docker-Bilder an

$ docker images
> REPOSITORY          TAG                   IMAGE ID            CREATED             SIZE
> ruby                2.5.1                 3c8181e703d2        22 months ago       869MB

#Löschen Sie das Bild, indem Sie die BILD-ID angeben

$ docker rmi 3c8181e703d2

das ist alles

Recommended Posts

Fehler beim Bereitstellen von Docker auf Schienen mit Notizen
Fehler beim Bereitstellen von EC2 mit CircleCI
DB-Fehler bei der Bereitstellung mit Heroku
Hinweise zur Verwendung von FCM mit Ruby on Rails
[Rails] Fehlerbehebung beim Generieren von Token mit PAYJP
Einführung in Rspec mit Ruby on Rails x Docker
Release: Durchführen der Bereitstellung gibt Fehlercode 400
Fehler beim Bereitstellen von Rails5 + MySQL auf Heroku mit Docker-Compose
Python-Memo auf Docker
Fehler beim Bereitstellen von EC2
Beim Verschlüsseln mit Node + Docker wurde eine Fehlermeldung angezeigt
Ruby on Rails-Lernprogramm Problematische Hinweise unter Windows
Führen Sie Rails immer im Docker aus
Fehler beim Spielen mit Java
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
Fehler bei der Verwendung von Schienen Capybara
[Docker] Wird immer mit Docker + Rails verwendet
Maßnahmen für Berechtigungen beim Erstellen von MySQL mit Docker auf WSL2
Erstellen einer Entwicklungsumgebung für Ruby on Rails mit Docker + VSCode (Remote Container)
WordPress mit Docker Compose unter CentOS 8
Lösungshinweise, wenn beim Herunterladen von Docker-GPG mit Curl ein Fehler auftritt
Konstruktionsverfahren für Rails on Docker-Umgebungen
[Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8
Stellen Sie Rails on Docker für Heroku bereit
Erstellen Sie eine Debug-Umgebung auf einem Container. Erstellen Sie mit Docker eine lokale Entwicklungsumgebung für Rails-Tutorials.
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 6.x)
Hinweise zur Vorgehensweise bei der Einrichtung von EC2 mit t2.micro
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 5.x)
Beim Erstellen einer Rails6-Umgebung unter Ubuntu bleibt die Bundle-Installation hängen
[Ruby on Rails] Fehler, bei dem Benutzer mit ... nach dem Abmelden nicht gefunden werden konnte
[Ruby on Rails] Test mit RSpec anzeigen
Erstellen einer Rails 6- und PostgreSQL-Umgebung mit Docker
Mit Docker auf Heroku bereitstellen (Rails 6, MySQL)
Versuchen Sie, die Rails-App für EC2-Teil 1 bereitzustellen.
Schaben mit Puppenspieler in Nuxt auf Docker.
Fehler beim Erstellen der Infrastruktur mit der aws-App
[Ruby on Rails] Controller-Test mit RSpec
Das Bild flog beim Aktualisieren von Docker mit WSL2
[Ruby on Rails] Modelltest mit RSpec
Erstellen Sie eine Umgebung mit Docker unter AWS
Lassen Sie uns mit Rails einen Fehlerbildschirm erstellen
Führen Sie Ubuntu + ROS mit Docker auf dem Mac aus
So erstellen Sie eine Rails 6-Umgebung mit Docker
Umgang mit NameError: nicht initialisierte Konstante :: Analysierbarer Fehler bei der Installation von Active Storage in Rails6
[Laravel] Umgang mit Fehlern aufgrund von Speichermangel, wenn Komponisten [Docker] benötigen
[Fehlerbehebung] Tritt auf, wenn versucht wird, mit Docker eine Umgebung für den Frühling zu erstellen