Ich habe Docker als Anfänger für mein Portfolio verwendet, daher hoffe ich, dass sogar 1 mm für jemanden hilfreich ist.

Schließlich ist das Portfolio vollständig und bereit zur Bereitstellung Ich würde gerne hart ausgeben.

** Erstellt App ToDoGame ** Image 2020-10-27 at 10.45.17 AM.png github

** Verwendete Technologie ** Image 2020-11-01 at 3.32.12 PM.png

Da ich Docker endlich integriert habe, möchte ich Artikel und Videos vorstellen, die aus Dankbarkeit hilfreich waren.

In diesem Video habe ich die Grundlagen von Docker gelernt

Docker-Kurs, um von nun an aufzuholen! Zielen Sie mit AWS ECS und Fargate auf den Container Master! ~ Erster in der Reihe ~

"Wie frei !!!"

Wo dieses Video hilfreich war ↓

Ich war überzeugt, dass ich Docker integrieren wollte

Die Nachfrage nach Docker wächst und wird für Ingenieure zu einer unverzichtbaren Technologie.

Ich habe verstanden, was Docker ist

Ein Behälter zur Aufbewahrung von Gegenständen. Der Container enthält die Anwendung.

Es ist sehr praktisch, Ihre Heimanwendung zur Arbeit in einem tragbaren Container mitzunehmen.

Über Dockerfile

[Was ist Docker? Was ist eine Docker-Datei? ](Https://qiita.com/matsugaknight/items/c77fec14ec3c281a47b4#:~:text=Dockerfile%20%E3%81%A8%E3%81%AF-,Docker%E4%B8%8A%E3%81% A7% E5% 8B% 95% E4% BD% 9C% E3% 81% 95% E3% 81% 9B% E3% 82% 8B% E3% 82% B3% E3% 83% B3% E3% 83% 86% E3% 83% 8A% E3% 81% AE% E6% A7% 8B% E6% 88% 90% E6% 83% 85% E5% A0% B1,% E3% 81% 99% E3% 82% 8B% E3 % 81% 9F% E3% 82% 81% E3% 81% AE% E3% 83% 95% E3% 82% A1% E3% 82% A4% E3% 83% AB% E3% 81% A7% E3% 81 % 99% E3% 80% 82)

Eine Datei, die die Konfigurationsinformationen des Containers beschreibt, der auf Docker ausgeführt wird.

Erstellen Sie ein Docker-Image mit dem Docker-Build-Befehl basierend auf den in der Docker-Datei beschriebenen Informationen.

Der Grund, über diese Konfiguration nachzudenken

Als ich diesen Artikel las, wurde ich von meinem eigenen Respekt inspiriert und sagte: "Es ist zu erstaunlich ... ich glaube nicht, dass ich im selben Job bin." [Teil 1] Testen / Bereitstellen eines mit Rails + Nuxt + MySQL + Docker mit ECS / ECR / CircleCI erstellten WEB-Dienstes und Konvertieren in Terraform

Diesmal meine Komposition

ToDoGame
├─docker-compose.yml 
├─frontend
|   ├─Dockerfile
└─backend
    ├─Dockerfile
    ├─Gemfile
    └─Gemfile.lock

Dockerfile

Backend-Seite

#Festlegen des Basisbilds(Verwenden Sie alpine, um das Gewicht des Bildes zu reduzieren)
FROM ruby:2.7.1-alpine3.10

#Laden Sie die erforderlichen Pakete herunter
ENV RUNTIME_PACKAGES="linux-headers libxml2-dev make gcc libc-dev nodejs tzdata mysql-dev mysql-client yarn" \
    DEV_PACKAGES="build-base curl-dev" \
    HOME="/app" \
    LANG=C.UTF-8 \
    TZ=Asia/Tokyo

#Wechseln Sie in das Arbeitsverzeichnis
WORKDIR ${HOME}

#Kopieren Sie die erforderlichen Dateien vom Host (Dateien auf Ihrem Computer) nach Docker
ADD Gemfile ${HOME}/Gemfile
ADD Gemfile.lock ${HOME}/Gemfile.lock

RUN apk update && \
    apk upgrade && \
    apk add --update --no-cache ${RUNTIME_PACKAGES} && \
    apk add --update --virtual build-dependencies --no-cache ${DEV_PACKAGES} && \
    bundle install -j4 && \
    apk del build-dependencies && \
    rm -rf /usr/local/bundle/cache/* \
    /usr/local/share/.cache/* \
    /var/cache/* \
    /tmp/* \
    /usr/lib/mysqld* \
    /usr/bin/mysql*

#Kopieren Sie die erforderlichen Dateien vom Host (Dateien auf Ihrem Computer) nach Docker
ADD . ${HOME}

#Öffnen Sie den Port 3000
EXPOSE 3000

#Befehl ausführen
CMD ["bundle", "exec", "rails", "s", "puma", "-b", "0.0.0.0", "-p", "3000", "-e", "development"]

★ Verwenden Sie die Anweisung ENV, um einen Wert in einer Umgebungsvariablen festzulegen

★ RUNTIME_PACKAGES ** Zum Ausführen von Programmen erforderliche Teile ** "Laufzeit" + "Paket" ist "Laufzeitpaket". Wenn die Laufzeit "ein Programm ausführt (zur Laufzeit)"

Frontend-Seite

FROM node:12.5.0-alpine

ENV HOME="/app" \
    LANG=C.UTF-8 \
    TZ=Asia/Tokyo

ENV HOST 0.0.0.0

WORKDIR ${HOME}

RUN apk update && \
    apk upgrade && \
    npm install -g n && \
    yarn install &&\
    rm -rf /var/cache/apk/*

★ Der Zugriff von außerhalb des Containers ist zulässig, indem für die Umgebungsvariable HOST 0.0.0.0 angegeben wird.

Was ist Docker Compose?

Docker Compose ist eine Funktion, die das Erstellen und Ausführen eines Dienstes, der aus mehreren Containern besteht, automatisiert und die Verwaltung vereinfacht. Mit Docker Compose können Sie eine Compose-Datei vorbereiten und den Befehl einmal ausführen, um die Einstellungen aus dieser Datei zu lesen und alle Containerdienste zu starten.

docker-compose.yml

docker-compose.yml


version: "3"

services:
  db:
    image: mysql:5.7
    env_file:
      - ./backend/config/environments/db.env
    restart: always
    volumes:
      - db-data:/var/lib/mysql:cached

  back:
    build: backend/
    # rm -f tmp/pids/server.Nützlich, wenn Sie den Rails-Server nicht mit pid löschen können
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 
    env_file:
      - ./backend/config/environments/db.env
    volumes:
      - ./backend:/app:cached
    depends_on:
      - db
    #Host-Computer-Port: Port in Docker
    ports:
      - 3000:3000

  front:
    build: frontend/
    command: yarn run dev
    volumes:
      - ./frontend:/app:cached
    ports:
      #Host-Computer-Port: Port in Docker
      - 8080:3000
    depends_on:
      - back
volumes:
  public-data:
  tmp-data:
  log-data:
  db-data:

** Interessant, weil es noch viele Dinge gibt, die ich nicht verstehe (fertig) **

Artikel, der mir den Einstellungsteil beigebracht hat

Docker komponiert Kotobuki Hands-on

Ich habe einen API-Container mit Rails on Docker (alpine) erstellt

Beiseite

Als ich ab November den Job wechselte, war ich wirklich enttäuscht, dass ich AWS nicht einführen konnte, weil ich eine Zeit in mir hatte. Aber jetzt habe ich keine Zeit zum Beulen! Ich werde mein Bestes tun, um den Job zu wechseln.

Recommended Posts

Ich habe Docker als Anfänger für mein Portfolio verwendet, daher hoffe ich, dass sogar 1 mm für jemanden hilfreich ist.
[Android] Ich möchte einen ViewPager erstellen, der für Tutorials verwendet werden kann
Ich habe einen THETA API-Client erstellt, der für die Plug-Entwicklung verwendet werden kann
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (graue Magie, die weniger schwarze Magie ist)
Eine Sammlung von Mustern, die Sie kennen möchten, um den Code nicht zu komplizieren