FrontEnd Docker-Entwicklung

Legende

Wenn ein neuer Entwickler hinzukommt, steht er vor der Aufgabe, die Entwicklungsumgebung zu starten. Und bis vor kurzem wurde es oft so, als würde man mit einem Tamburin tanzen. Liefern Sie 10 verschiedene Pakete bestimmter Versionen, und es stellt sich heraus, dass für Ihr eigenes Haustierprojekt unterschiedliche Versionen erforderlich sind, oder es kann sich sogar um ein anderes Projekt innerhalb derselben Arbeit handeln. Jedes Mal, wenn der Spezialist auf seine Weise aus dieser Situation herauskam, blieb das Hauptproblem zusätzlich zu der Zeit, die für diese Konfiguration aufgewendet wurde, bestehen, dass die Leistung von Entwickler zu Entwickler oder Läufer nicht garantiert wurde.





- , , . Docker.





FrontEnd , Docker. .





, :





  1. Docker





  2. 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 , .





GitHub:





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 ?





  1. Dockerfile



    , image







  2. NODE_ENV: development



    -> production







  3. 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 







Darin liegt die geheime Datei sectret.txt Die

Datei kann ihren Inhalt anzeigen und bearbeiten.





Ergebnisse

Zweifellos ist das Thema Containerisierung sehr umfangreich und wir haben nur einen winzigen Teil behandelt, jedoch die notwendige Basis, um loszulegen. Ich würde mich freuen, wenn dieser Artikel einen Ausgangspunkt für die FE-Entwicklung in Docker bietet.





GitHub: hier








All Articles