Im Thema "Gesamtkonzentration" wird "Verwendung von Docker" für den virtuellen Mameko zusammengefasst, der in mir schläft.

Einführung

Docker ist ein "praktisches Tool, mit dem sich problemlos eine Entwicklungsumgebung erstellen lässt".

Selbst wenn Sie ernsthaft Baseball spielen möchten, ist es schwierig, einen Platz zu finden ... Bereiten Sie eine Basis vor, messen Sie die Entfernung, bereiten Sie einen Schläger, einen Ball und einen Zuschauersitz vor. Jedoch! Mit Docker können Sie sofort eine PayPay-Kuppel erstellen! (Nicht beendet.)

Baseballfelder sind nicht möglich, aber in einer Systementwicklungsumgebung.

Es ist eine praktische Anwendung, mit der Sie sofort eine Systementwicklungsumgebung erstellen und diese Umgebung an mehrere Personen verteilen können.

Über diesen Artikel

In diesem Artikel werden Konzepte wie Container nicht speziell behandelt. Ich erstelle einen Artikel für die folgenden Zwecke.

――Sie können Docker tatsächlich berühren und das Gefühl haben, dass die Systemumgebung bereit ist. ――Sie können es sofort herausziehen, wenn Sie sich später daran erinnern.

Nezko! !! !! !! !! !! Docker Ich werde mein Bestes geben, um es zu benutzen! !! !!

Ausführungsumgebung

* Wenn Sie es noch nicht installiert haben, besuchen Sie bitte die offizielle Website oben. </ font>

Die Seite, die ich als Referenz verwendet habe

Insbesondere habe ich studiert und mich auf die Top-Seite bezogen. Das Konzept ist gut beschrieben. Wenn Sie diesen Artikel lesen, werfen Sie bitte einen Blick darauf.

Machen wir das!

Erstellen Sie einen Container aus einer Docker-Datei

Erstellen Sie einen Container mit PHP und Apach, die unter CentOS7 installiert sind.

fließen

① Erstellen Sie eine Docker-Datei an einem beliebigen Ort (Dateiname: Docker-Datei) 2 Erstellen Sie ein Bild aus der erstellten Docker-Datei. ③ Erstellen Sie einen Container basierend auf dem Bild.

Verfahren

① Erstellen Sie zunächst eine Docker-Datei auf Ihrem PC.

dockerfile


#Basierend auf dem centos7-Image von Docker Hub.
FROM centos:centos7

#Installieren Sie Apach und PHP in Centos7 Image
RUN yum -y install httpd php

#Führen Sie den Befehl aus, um Åpach zu starten
CMD ["/usr/sbin/httpd","-DFOREGROUND"]

(2) Erstellen Sie ein Bild basierend auf der erstellten Docker-Datei.

Erläuterungen zu den Optionen finden Sie unter Docker Document Japaneseization Project.

#Inhalt
docker build -t Bildname:Tag-Name Dockerfile-Verzeichnis

#Beispiel | Der Bildname ist lamptest. Tag ist 1.0. Verwenden Sie die aktuelle Docker-Datei des Verzeichnisses
docker build -t lamptest:1.0 .

Das obige erstellt ein Bild. Screen Shot 2020-11-17 at 11.47.03.png

③ Starten Sie den Container basierend auf dem erstellten Image

#Inhalt
docker run -d -p Portnummer:Port-Nummer--Name Containername Bildname:Verlinke den Namen

#Beispiel | Weisen Sie die Version 80 der Version 8080 zu.
#Der Containername lautet testserver.
#Bilder und Tags sind am lahmsten:1.Verwenden Sie 0.
docker run -d -p 8080:80 --name testserver lamptest:1.0

Der Container ist erfolgreich abgeschlossen. Screen Shot 2020-11-17 at 11.59.47.png

Wenn Sie auf [http: // localhost: 8080](http: // localhost: 8080) zugreifen, wird der folgende Bildschirm angezeigt.

Screen Shot 2020-11-17 at 15.29.00.png

* Ergänzung * Containerbetrieb


#Anlaufen
Docker-Startcontainername

#Halt
Docker Stop Container Name

#Geh in den Behälter
docker exec -i -t Containername bash

Die Operation ist auch mit der GUI möglich. Screen Shot 2020-11-17 at 15.19.03.png

Detaillierte Beschreibung des Dockerfile-Befehls

Die häufig verwendeten werden kurz beschrieben. Weitere Informationen finden Sie unter Docker Document Japaneseization Project.

From Erstellen Sie basierend auf dem Docker-Image.


#Inhalt
FROM Bildname:Verlinke den Namen

#Beispiel | Basierend auf dem Bild von Centos
FROM centos:centos7

Run Führen Sie den Befehl für das in FROM angegebene Image aus.

#Inhalt
FROM Befehl zum Ausführen

#Beispiel | httpd mit yum installieren
RUN yum -y install httpd

COPY Geben Sie die Datei, die Sie kopieren möchten, im Docker-Image (im Container) an.

#Inhalt
Pfad der Datei, die Sie in das FROM-Image kopieren möchten Pfad des Kopierzielbilds

#Beispiel | hoge-Datei im selben Verzeichnis wie Dockerfile,/In das tmp-Verzeichnis kopieren.
COPY hoge.txt /tmp

ADD Wenn Sie eine Datei angeben, die über eine URL angegeben werden kann und vom Tar-Archiv (gzip, bzip2, xz) komprimiert wird, wird sie automatisch erweitert. Davon abgesehen ist es dasselbe wie der Befehl COPY.

#Inhalt
Der Dateipfad oder die URL, die Sie in das ADD-Image kopieren möchten.

#Beispiel | tar.Bildspeicherung beim Erweitern der gz-Datei
ADD hoge.tar.gz /tmp

#Beispiel | Speichern Sie die URL-Zieldatei im angegebenen Verzeichnis.
ADD https://zukan.pokemon.co.jp/detail/025 /tmp

RUN Führen Sie den Befehl beim Erstellen des Bildes aus.

#Inhalt
RUN-Befehlsoption

#Beispiel | ls Befehl-Mit der Option a.
RUN ls -a

CMD Führen Sie den Befehl aus, wenn der Container gestartet wird.

#Inhalt
CMD [Befehl,Möglichkeit]

#Beispiel | ls Befehl-Mit der Option a.
CMD [ ls , -a ]

ENV Geben Sie einen Wert in die Anzahl der Umgebungsvariablen ein. (Gleich kann weggelassen werden.)

#Inhalt
Name der ENV-Umgebungsvariablen=Wert der Umgebungsvariablen
Name der ENV-Umgebungsvariablen Wert der Umgebungsvariablen

#Beispiel | Ichinokata in die Umgebungsvariable MIZUNOKOKYU einfügen
ENV MIZUNOKOKYU=ichinokata

USER Name der Benutzerausführung wechseln

#Inhalt
USER Benutzername

#Beispiel | Wechseln Sie den Benutzernamen zu akiunleash
USER akiunleash

Erstellen und verknüpfen Sie mehrere Container mit Docker-Compose

Es ist möglich, mehrere Container mit Apps und Datenbanken als ein System zu erstellen. Lassen Sie uns Rails- und PostgreSQL-Container separat erstellen und als ein System zusammenarbeiten.

fließen

① Erstellen Sie die erforderlichen Dateien wie docker-compose.yml ② Erstellen Sie ein Bild und einen Container mit Docker-Compose Run ③ Gemfile wird aktualisiert. Erstellen Sie es daher erneut mit Docker-Compose-Bulde. ④ Ändern Sie die Einstellungen für Benutzername und Kennwort, damit Sie von der Rails-Seite aus eine Verbindung zu PostgreSQL herstellen können. ⑤ Erstellen Sie eine PostgreSQL-Datenbank aus Rails ⑥ Fertigstellung!

Verfahren

Bereiten Sie die folgenden vier Dateien vor.

  • docker-compose.yml
  • dockerfile
  • Gemfile
  • Gemfile.lock

docker-compose.yml


version: '3'
services:
  db:
    image: postgres
    environment:
      - POSTGRES_PASSWORD=password
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

dockerfile


#Basierend auf dem centos7-Image von Docker Hub.
FROM ruby:2.3.3

#Aus dem Paketverwaltungssoftware-Update
# build-essential libpq-Installieren Sie dev nodejs
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

#Erstellen Sie das myapp-Verzeichnis im Container
RUN mkdir /myapp

#Im Arbeitsverzeichnis einstellen
WORKDIR /myapp

#Erstellen Sie eine Datei im selben Verzeichnis wie die Docker-Datei im Container
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock

#Installieren Sie in Gemfile geschriebene Schienen
RUN bundle install

#Erstellen Sie Rails-Dateien und -Verzeichnisse in Containern
ADD . /myapp

Gemfile


source 'https://rubygems.org'
gem 'rails', '5.0.0.1'

Gemfile.lock


#Leere Akte

Führen Sie den Befehl in dem Verzeichnis aus, in dem die obige Datei gespeichert ist

docker-compose run web rails new . --force --database=postgresql

Die Gem-Datei wird aktualisiert. Führen Sie daher den Befehl aus, um die Gem erneut zu installieren.

docker-compose build

Bearbeiten Sie die Informationen, um eine Verbindung zur Datenbank herzustellen.

config/database.yml



default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: password
  pool: 5

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test

production:
  <<: *default
  database: myapp_production
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

Lass uns die App starten!

docker-compose up -d

Da es im aktuellen Status keine Datenbank gibt, werden wir sie erstellen.

docker-compose run web rake db:create

Bestätigung!

Wenn Sie auf [http: // localhost: 3000 /](http: // localhost: 3000 /) zugreifen und die folgende Seite angezeigt wird, ist dies erfolgreich. Screen Shot 2020-11-18 at 11.12.38.png

Sie können sehen, dass der Container auch ordnungsgemäß gestartet wurde. Screen Shot 2020-11-18 at 11.18.04.png

Wenn es unnötige Container enthält, wird es einmal heruntergefahren und verschwindet beim Neustart.

#Einmal unten
docker-compose down

#Seite nach oben
docker-compose up -d

Erklärung von docker-compose.yml

docker-compose.yml


version: '3'
services:
  db:
    image: postgres
    environment:
      - POSTGRES_PASSWORD=password
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
Artikel Erläuterung
version docker-Version verfassen
services Containername (WEB und DB erstellen)
image Verwenden Sie das Bild von Docker Hub
environment Umgebungsvariablen festlegen
build Verwenden Sie die angegebene Docker-Datei.
command Befehle, die nach dem Erstellen eines Containers ausgeführt werden sollen
volumes Datei einhängen
ports Angeben eines Ports
depends_on Startreihenfolge

Schließlich

Ich hoffe, es hilft Ihnen, ein Gefühl dafür zu bekommen, was Docker ist. Wenn Sie Fehler im Inhalt finden, lassen Sie es uns bitte wissen.

Geschichte verändern

Datum Inhalt
2020/11/18 Erste Ausgabe

Recommended Posts

Im Thema "Gesamtkonzentration" wird "Verwendung von Docker" für den virtuellen Mameko zusammengefasst, der in mir schläft.
Für diejenigen, die MySQL für die Datenbank in der Umgebungskonstruktion von Rails6 ~ verwenden möchten.
[Für diejenigen, die Portfolios erstellen] Verwendung von binding.pry mit Docker
Verwendung von Docker in VSCode DevContainer
So ermitteln Sie die Gesamtzahl der Seiten beim Paging in Java
Verstehe in 5 Minuten !! Wie man Docker benutzt
Anzeigen der vom Docker-Container verwendeten Festplattenmenge für jeden Container
So überprüfen Sie das Protokoll im Docker-Container
Ausgabe der Verwendung der Slice-Methode
Verwendung von JQuery in Rails 6 js.erb
So installieren Sie Docker in der lokalen Umgebung einer vorhandenen Rails-App [Rails 6 / MySQL 8]
Verwendung von UsageStatsManager in Android Studio (Überprüfen der Startzeit anderer Apps)
Verwendung von git mit der Leistung von jgit in einer Umgebung ohne git-Befehle
Zusammenfassung der Verwendung des im IE festgelegten Proxy-Sets bei der Verbindung mit Java
In Time.strptime ist% j (Gesamtdatum des Jahres)
[Für diejenigen, die Portfolios erstellen] Verwendung von Font-Awesome-Rails
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
[Rails] So speichern Sie die Anforderungs-URL eines Benutzers, der nicht angemeldet ist, vorübergehend und kehren nach der Anmeldung zu dieser URL zurück
Verwendung der Getter / Setter-Methode (in Objektorientierung)
So erstellen Sie ein Platzhalterteil zur Verwendung in der IN-Klausel
[Für diejenigen, die Portfolios erstellen] Verwendung von Chart Kick
So leiten Sie den letzten Tag des Monats in Java ab
Ist es für den Benutzer einfach, Allzweckfunktionen zu implementieren? Seien wir uns dessen bewusst
Verwenden Sie MailHog zum Überprüfen von E-Mails in der Entwicklungsumgebung (mit Docker).
[Sprint Boot] Verwendung der drei in org.springframework.jdbc.core.namedparam definierten Arten von SqlParameterSource
So geben Sie den Wert aus, wenn sich ein Array im Array befindet
So erhalten Sie den Inhalt von Map mithilfe des for-Anweisungsmemorandums
[Schienen] So ändern Sie den Seitentitel des Browsers für jede Seite
So erhalten Sie die ID des automatisch inkrementierten PRIMAY-Schlüssels in MyBatis
Die in /lib/calendars.properties von Java jre festgelegte Millisekunde ist UTC
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge
So ermitteln Sie die Länge einer Audiodatei mit Java
So erhöhen Sie den Wert von Map in einer Zeile in Java
[RSpec] Wenn Sie die Instanzvariable des Controllers im Test verwenden möchten [Zuweisungen wird nicht empfohlen]