介绍
本文是使用Sequelize将Postgres连接到Docker中的Express的文章。
即使当我查找它时,每篇文章的构建方式也存在很大差异,因此我设计了一种对我来说很容易的方法并进行了总结。
警告
这是备忘录
我不会给出基本解释。主要关于DB和Express之间的连接
我完全不了解Docker,因此目录结构以及如何编写Dockerfile可能不是很好。
环境
- 码头工人
- Node.js
- 表示
- PostgreSQL的
- Next.js(由于已通过API交换,因此服务器已设置并完成)
目录结构
1 2 3 4 5 | product-docker-express-Dockerfile//マウント用 -next-Dockerfile//マウント用 -express //expressを直接インストール -next //Nextを直接インストール -docker-compose |
在产品/快递上安装续集
1 | npm install --save sequelize pg sequelize-cli |
Docker-compose中的设置
码头工人组成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | version: '3' services: backend: build: context: ./docker/express dockerfile: Dockerfile image: back container_name: back ports: - 3000:3000 environment: DATABASE_URL: postgres://postgres:postgres@db:5432/postgres volumes: - ./express:/src command: [sh, -c, npm install && npm start] frontend: build: context: ./docker/next dockerfile: Dockerfile image: front container_name: front ports: - 3001:3000 volumes: - ./next:/src command: [sh, -c, npm install && npm run dev] db: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - "5432:5432" |
这里重要的是DATABASE_URL。
稍后,将其设置为在序列的config.json中用作环境变量。
该网址是
是的,并且按docker-compose的设置应用。
对于dbname,根据postgres-Docker Hub,如果未提及POSTGRES_DB,则将使用POSTGRES_USER的值。
续集
通过安装
cli,您可以生成模型和迁移,例如Rails的ActiveRecord。
1 2 | $ sequelize init //modelやmigration、configなどのフォルダーを生成。 |
想参加考试的人
1 | $ docker-compose up -d |
1 | $ docker-compose run backend npx sequelize model:create --name Test //モデルとマイグレーションファイルを生成 |
1 | $ docker-compose run backend npx sequelize db:migrate --env development |
您仍然应该得到一个错误...
config / config.json设置
1 2 3 4 | "development": { "dialect": "postgres", "use_env_variable":"DATABASE_URL" } |
而当您执行文章中的"人们想要做的测试"时...

迁移得到反映。
概括
我不知道正确的答案是什么,但是当我看其他文章时,很难找到答案,因为我是自己编写SQL脚本或编写模型的。
它可能无济于事,因为它是由刚接触第一个环境构造的初学者编写的。
如果有的话... twitter @izszzz_