Enfin le portefeuille est complet et prêt à être déployé Je voudrais sortir dur.
** Création de l'application ToDoGame ** github
** Technologie utilisée **
Docker est de plus en plus demandé et deviendra une technologie essentielle pour les ingénieurs.
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.
[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.
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
ToDoGame
├─docker-compose.yml
├─frontend
| ├─Dockerfile
└─backend
├─Dockerfile
├─Gemfile
└─Gemfile.lock
Dockerfile
#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)"
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.
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) **
Docker compose Kotobuki Hands-on
J'ai créé un conteneur API avec Rails sur Docker (alpin)
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