Versuchen Sie, Express + PostgreSQL + Sequelize mit Docker zu erstellen [Teil 1]

Präambel

In Zukunft wollen wir das Frontend wie Vue und das Backend wie Express konfigurieren. Erstellen Sie zunächst eine Umgebung mit Express + PostgreSQL + Sequelize im Backend!

① Bis zum Containerbetrieb mit Docker

Anfängliche Dateistruktur

-Dockerfile
-docker-compose.yml
-app
|-- package.json

Dockerfile

Dockefile


#Bildspezifikation
FROM node:latest

#Einstellungen für Umgebungsvariablen
ENV NODE_ENV="development"

#Arbeitsverzeichnis erstellen&Aufbau
WORKDIR /src

COPY ./app /src

RUN npm install

docker-compose.yml

Entwerfen Sie nun die Struktur des Node.js Express-Containers (serverseitig) und die Struktur des DB-Containers.

docker-compose.yml


version: '3'
services:
  app:
  #Dockerfile-Speicherort
    build:
      context: ./  
    depends_on:
      - database
    image: n-app
    #Lautstärkeeinstellung
    volumes:
     - "./app:/src"
    #Containername
    container_name: n-app
    #Portverbindung
    ports:                          
      - 3000:5000
    environment:
      PORT: 5000
      DB_USER: postgres
      DB_HOST: database
      DB_PORT: 5432
      DB_NAME: mydatabase
    tty: true

  database:
    image: postgres:12.3
    volumes:
      - ./init-sql:/docker-entrypoint-initdb.d:ro
    environment:
      POSTGRES_DB: mydatabase
      TZ: "Asia/Tokyo"
      POSTGRES_HOST_AUTH_METHOD: trust

package.json

Es ist für mich. Durch Festlegen von Volumes werden die auf dem Container installierten Pakete auch auf dem Host und dem Container gespeichert. Selbst wenn Sie den Container zerstören, können Sie die Umgebung des zerstörten Containers durch 'npm install' basierend auf package.json wiederherstellen, indem Sie Volumes festlegen.

app/package.json


{
  "name": "myapp",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www",
  },
  "dependencies": {
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "ejs": "~2.5.7",
    "express": "~4.16.0",
    "http-errors": "^1.6.3",
    "morgan": "~1.9.0",
    "nodemon": "^2.0.4",
    "pg": "*",
    "sequelize": "^6.3.5",
    "sequelize-cli": "^6.2.0"
  }
}

Ich habe auf die folgende Seite verwiesen. Ich habe von Github der folgenden Site geklont und die erforderlichen Informationen hinzugefügt. Dies war sehr praktisch, da die Express-Vorlage im Voraus erstellt wurde.

https://qiita.com/tamoco/items/caffca436546a1a5fcc8

Lassen Sie uns nun den Container mit Docker ausführen.

Terminal


$ docker-compose build

Building app
Step 1/5 : FROM node:10.12
 ---> a2b9536415c2
Step 2/5 : ENV NODE_ENV="development"
 ---> Using cache
 ---> 40f981aef1ce
Step 3/5 : WORKDIR /src
 ---> Using cache
 ---> ec233d742a63
Step 4/5 : COPY ./app /src
 ---> Using cache
 ---> 88f269307e53
Step 5/5 : RUN npm install
 ---> Using cache
 ---> b22a8c36f08e

$ docker-compose up -d

$ docker-compose ps

      Name                     Command              State           Ports
----------------------------------------------------------------------------------
n-app               node                            Up      0.0.0.0:3000->5000/tcp
ta-app_database_1   docker-entrypoint.sh postgres   Up      5432/tcp

$ docker exec -it n-app bash

root@f195575a066f:/src# 

Ich konnte den oben gebauten Container betreten.

② Express-Umgebungskonstruktion

Express ist ein MVC-Framework für Webanwendungen, das auf Node.js ausgeführt wird. In meinem Fall habe ich es aus dem Repository eines großen Vorfahren geklont, sodass ich im Voraus eine Vorlage für Express hatte.

Wenn Sie eine Express-Vorlage generieren möchten, sieht dies folgendermaßen aus.

# npm install express-generator -g

1.Wenn Sie eine Ansicht als Mops-Datei erstellen möchten(Default)
# express --view=pug myapp

Wenn Sie eine Ansicht als ejs-Datei erstellen möchten
2. express -e myapp 

nächstes Mal

https://qiita.com/rockguitar67/items/0020d734201632077cb5

Verweise

Docker-Express erstellen https://qiita.com/tamoco/items/caffca436546a1a5fcc8

https://gitlab.com/tamoco-mocomoco/study-docker-compose/-/tree/master/app/routes

https://qiita.com/yoshiplum/items/129e7ad1ffc3a02b9eb2

Über Docker-Volumes https://qiita.com/gounx2/items/23b0dc8b8b95cc629f32

Recommended Posts

Versuchen Sie, Express + PostgreSQL + Sequelize mit Docker zu erstellen [Teil 2]
Versuchen Sie, Express + PostgreSQL + Sequelize mit Docker zu erstellen [Teil 1]
Erstellen einer Rails 6- und PostgreSQL-Umgebung mit Docker
Versuchen Sie, den Cloudera Manager mit Docker auszuführen
Versuchen Sie, PostgreSQL-Arrays mit JDBC zu bearbeiten
So erstellen Sie mit Docker ~ Sequelize ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
[Docker] Erstellen Sie mit Docker eine Node.js + Express + Webpack-Umgebung
Installieren Sie Docker mit WSL2 Memo ([Teil 2] Docker-Einführung)
Erleben Sie CI / CD mit Katacoda (für Anfänger) - Teil 10 (Erstellen von Docker-Bildern mit Jenkins)
Versuchen Sie, einen anderen Servlet-Container-Steg mit Docker zu verwenden
Rails Docker-Teil 1-
Rails Docker ~ Teil 2 ~
Bis ich versuche, Apache Kafka mit Docker-Image auszuführen
Versuchen Sie, mit Java eine Verbindung zu AzureCosmosDB Emulator for Docker herzustellen
Führen Sie Mosquitto mit Docker aus und versuchen Sie die WebSocket-Kommunikation mit MQTT
Versuchen Sie, Java mit GraalVM in ein natives Modul zu integrieren