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
#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)
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,,,,
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 #)
[Mac Docker ist frei von langsamem Stress](https://qiita.com/ysKey2/items/346c429ac8dfa0aed892 #)
docker-compose.yml
#Beispiel
services:
app:
volumes:
- .:/project/sample_app:delegated
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."
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.
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
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.
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? ??
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.
#Docker ohne Cache-compose.Ziehen Sie ein neues Bild mit der von yml angegebenen Ruby-Version
$ docker-compose build --no-cache
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