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!
-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 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
https://qiita.com/rockguitar67/items/0020d734201632077cb5
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