À l'avenir, nous visons à configurer le frontal comme Vue et le backend comme Express. Tout d'abord, créez un environnement avec Express + PostgreSQL + Sequelize sur le back-end!
-Dockerfile
-docker-compose.yml
-app
|-- package.json
Dockerfile
Dockefile
#Spécification d'image
FROM node:latest
#Paramètres des variables d'environnement
ENV NODE_ENV="development"
#Créer un répertoire de travail&Configuration
WORKDIR /src
COPY ./app /src
RUN npm install
docker-compose.yml
Concevez maintenant la structure du conteneur Node.js Express (côté serveur) et la structure du conteneur DB.
docker-compose.yml
version: '3'
services:
app:
#Emplacement de stockage Dockerfile
build:
context: ./
depends_on:
- database
image: n-app
#réglage des volumes
volumes:
- "./app:/src"
#Nom du conteneur
container_name: n-app
#Connexion au port
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
C'est pour moi. En définissant Volumes, les packages installés sur le conteneur sont également enregistrés sur l'hôte et le conteneur. Même si vous détruisez le conteneur, vous pouvez restaurer l'environnement du conteneur détruit par "npm install" basé sur package.json en définissant Volumes.
--Dans les scripts, définissez la partie "○○" de la commande "node ○○". Veuillez noter qu'actuellement ./bin/www ne sera créé que si vous générez un fichier modèle Express.
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"
}
}
Je me suis référé au site suivant. J'ai cloné à partir de github du site suivant et ajouté les informations nécessaires. C'était très pratique car le modèle Express était préparé à l'avance.
https://qiita.com/tamoco/items/caffca436546a1a5fcc8
Maintenant, exécutons le conteneur à l'aide de Docker.
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#
J'ai pu entrer dans le conteneur construit ci-dessus.
Express est un framework de type MVC pour les applications Web qui s'exécute sur Node.js. Dans mon cas, je l'ai cloné à partir du référentiel d'un grand ancêtre, donc j'avais un modèle pour Express à l'avance.
Si vous souhaitez générer un modèle Express, il ressemble à ceci.
# npm install express-generator -g
1.Si vous souhaitez créer une vue sous forme de fichier pug(Default)
# express --view=pug myapp
Si vous souhaitez créer une vue sous forme de fichier ejs
2. express -e myapp
https://qiita.com/rockguitar67/items/0020d734201632077cb5
Construire Docker-Express https://qiita.com/tamoco/items/caffca436546a1a5fcc8
https://gitlab.com/tamoco-mocomoco/study-docker-compose/-/tree/master/app/routes
https://qiita.com/yoshiplum/items/129e7ad1ffc3a02b9eb2
À propos de Docker-Volumes https://qiita.com/gounx2/items/23b0dc8b8b95cc629f32
Recommended Posts