J'ai utilisé Docker pour mon portfolio en tant que débutant, donc j'espère que même 1 mm sera utile à quelqu'un.

Enfin le portefeuille est complet et prêt à être déployé Je voudrais sortir dur.

** Création de l'application ToDoGame ** Image 2020-10-27 at 10.45.17 AM.png github

** Technologie utilisée ** Image 2020-11-01 at 3.32.12 PM.png

Depuis que j'ai finalement incorporé Docker, j'aimerais présenter des articles et des vidéos qui ont été utiles avec gratitude.

J'ai appris les bases de Docker dans cette vidéo

Cours Docker à rattraper à partir de maintenant! Visez le Container Master avec AWS ECS et Fargate! ~ Premier de la série ~

"Comme c'est gratuit !!!"

Où cette vidéo a été utile ↓

J'étais convaincu que je voulais intégrer Docker

Docker est de plus en plus demandé et deviendra une technologie essentielle pour les ingénieurs.

J'ai compris ce qu'est Docker

Un conteneur pour ranger des choses à l'intérieur. Le conteneur contient l'application.

Il est assez pratique de transporter votre application domestique pour travailler dans un conteneur portable.

À propos de Dockerfile

[Qu'est-ce que Docker? Qu'est-ce qu'un Dockerfile? ](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)

Un fichier qui décrit les informations de configuration du conteneur qui s'exécute sur Docker.

Créez une image Docker avec la commande docker build basée sur les informations décrites dans le Dockerfile.

La raison de penser à cette configuration

Quand j'ai lu cet article, j'ai été inspiré par mon propre respect, en disant: "C'est trop incroyable ... Je ne pense pas que je suis dans le même travail." [Part 1] Tester / déployer automatiquement le service WEB créé avec Rails + Nuxt + MySQL + Docker avec ECS / ECR / CircleCI et le convertir en terraform

Ma composition cette fois

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

Dockerfile

côté backend

#Spécification de l'image de base(Utilisez alpin pour réduire le poids de l'image)
FROM ruby:2.7.1-alpine3.10

#Télécharger les packages requis
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

#Déplacer vers le répertoire de travail
WORKDIR ${HOME}

#Copiez les fichiers nécessaires de l'hôte (fichiers sur votre ordinateur) vers 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*

#Copiez les fichiers nécessaires de l'hôte (fichiers sur votre ordinateur) vers Docker
ADD . ${HOME}

#Ouvrir le port 3000
EXPOSE 3000

#Exécuter la commande
CMD ["bundle", "exec", "rails", "s", "puma", "-b", "0.0.0.0", "-p", "3000", "-e", "development"]

★ Utilisez l'instruction ENV pour définir une valeur dans une variable d'environnement

★ RUNTIME_PACKAGES ** Pièces nécessaires pour exécuter des programmes ** "Runtime" + "Package" est "Runtime Package". Lorsque le runtime "exécute un programme (au runtime)"

côté frontal

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/*

★ L'accès depuis l'extérieur du conteneur est autorisé en spécifiant 0.0.0.0 pour la variable d'environnement HOST.

Qu'est-ce que Docker Compose?

Docker compose est une fonction qui automatise la procédure de création et d'exécution d'un service composé de plusieurs conteneurs, ce qui facilite sa gestion. Avec Docker compose, vous pouvez préparer un fichier de composition et exécuter la commande une fois pour lire les paramètres de ce fichier et démarrer tous les services de conteneur.

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.Utile lorsque vous ne parvenez pas à effacer le serveur de rails avec pid
    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
    #Port de l'ordinateur hôte: port dans Docker
    ports:
      - 3000:3000

  front:
    build: frontend/
    command: yarn run dev
    volumes:
      - ./frontend:/app:cached
    ports:
      #Port de l'ordinateur hôte: port dans Docker
      - 8080:3000
    depends_on:
      - back
volumes:
  public-data:
  tmp-data:
  log-data:
  db-data:

** Intéressant car il y a encore beaucoup de choses que je ne comprends pas (fini) **

Article qui m'a appris la partie réglage

Docker compose Kotobuki Hands-on

J'ai créé un conteneur API avec Rails sur Docker (alpin)

De côté

Lorsque j'ai changé d'emploi à partir de novembre, j'ai été vraiment déçu de ne pas pouvoir présenter AWS parce que j'avais une période en moi. Mais maintenant, je n'ai pas le temps de faire des coups! Je ferai de mon mieux pour changer d'emploi.

Recommended Posts

J'ai utilisé Docker pour mon portfolio en tant que débutant, donc j'espère que même 1 mm sera utile à quelqu'un.
[Android] Je souhaite créer un ViewPager pouvant être utilisé pour les didacticiels
J'ai posé une question qui peut être utilisée pour des entretiens techniques
J'ai créé un client API THETA qui peut être utilisé pour le développement de plugins
Même en Java, je veux sortir vrai avec un == 1 && a == 2 && a == 3 (magie grise qui n'est pas tant que magie noire)
Une collection de modèles dont vous voulez être conscient pour ne pas compliquer le code