Légende
Lorsqu'un nouveau dĂ©veloppeur arrive, il est confrontĂ© Ă la tĂąche de dĂ©marrer l'environnement de dĂ©veloppement. Et jusqu'Ă rĂ©cemment, c'Ă©tait souvent comme danser avec un tambourin. Livrez 10 packages diffĂ©rents de certaines versions, et il s'avĂšre que votre propre projet familier nĂ©cessite des versions diffĂ©rentes, ou il peut mĂȘme s'agir d'un projet diffĂ©rent dans le mĂȘme travail. A chaque fois le spĂ©cialiste sortait de cette situation Ă sa maniĂšre, mais le principal problĂšme, outre le temps passĂ© sur cette configuration, restait que les performances de dĂ©veloppeur Ă dĂ©veloppeur ou coureur n'Ă©taient pas garanties.
- , , . Docker.
FrontEnd , Docker. .
, :
Docker
production, DevOps.
Docker
docker-compose, MacOS Docker Desktop , linux .
CLI Docker
docker docker-compose --help
docker --help
docker ps --help
docker-compose --help
docker-compose up --help
FE 2 package.json: "dev" "build" production .
. node , .
TL;DR;
docker-compose.dev.yml
version: "3.9"
services:
web:
image: node:15.8-alpine3.11
ports:
- "3000:3000"
volumes:
- ".:/app"
environment:
NODE_ENV: development
HOST: 0.0.0.0
working_dir: /app
command: sh -c "cd /app; yarn install; yarn run dev --host 0.0.0.0"
docker-compose.yml
version: "3.9"
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- "80:80"
environment:
NODE_ENV: production
Dockerfile
FROM node:15.8-alpine3.11 AS build
WORKDIR /app
COPY package.json package.json
RUN yarn install
COPY . .
RUN yarn build
FROM nginx:1.19-alpine
COPY --from=build /app/dist /opt/site
COPY nginx.conf /etc/nginx/nginx.conf
nginx.conf
worker_processes auto;
events {
worker_connections 8000;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 80;
listen [::]:80 default ipv6only=on;
root /opt/site;
location / {
try_files $uri $uri/ /index.html;
}
}
}
, :
:
docker-compose.dev.yml - , production
1 . âwebâ. : node:15.8-alpine3.11
, , production build.
2 . , .
3 . . , rebuild, â .
4 . âenvironmentâ , .
5 . âworking_dirâ , .
6 . (webpack-dev-server ): command: sh -c "yarn install; yarn run dev --host 0.0.0.0â
: docker-compose -f docker-compose.dev.yml up
production:
, . SSR, : node ..
docker-compose.yml
develop ?
Dockerfile
,image
NODE_ENV:
development
->production
command
nginx
nginx fallback /index.html , - , .
Dockerfile
: multi-stage building, .
Dockerfile
â
1 . , develop FROM node:15.8-alpine3.11 AS build
! build, , , , .
2 . /app
3-5 . :
: package.json ?
( ): , .
âpackage.jsonâ, , docker , . . .
6 . build.
â
â nginx .
8 . nginx .
9 . .
10 . nginx
: docker-compose up
deveopment
volumes , docker.
? :
~/project
. secret.txt
, : âsecret textâ
docker-compose.yml
, .
docker-compose.yml
version: "3.9"
services:
web:
image: alpine:latest
volumes:
- "./project:/app"
command: sh -c "sleep 3600â
7. 1 .
: docker-compose up -d
, docker.
: docker ps
: docker-compose exec -it {_} /bin/sh
: cd /app
Dans lequel se trouve le fichier secret sectret.txt Le
fichier peut ĂȘtre visualisĂ© et Ă©ditĂ© son contenu.
Résultats
Sans aucun doute, le sujet de la conteneurisation est trÚs vaste et nous n'avons couvert qu'une infime partie, cependant, nous avons couvert la base nécessaire pour commencer. Je serais heureux si cet article fournit un point de départ pour le développement FE dans Docker.
GitHub: ici