цель - закинуть мой fullstack проект на бесплатный хостинг Heroku, это мой курсовой проект. Какие действия мне нужно сделать, чтобы цель была выполнена, а также чтобы своё приложение я мог в будущем дорабатывать? ЛЮБЫМ СОВЕТАМ БУДУ РАД!
Исправляйте всё, что не нравится. Я в этом слаб
🖥
Front: React, MobX, Axios
Back: Express NodeJS, PostgreSQL, Sequilize
📉
Проблема при поднятии:
"ERROR: for postgres Cannot start service postgres: driver failed programming external connectivity on endpoint postgres (d5e3f9ddc48936865621985364001777eccdae36ce1eb2e44f78bf1e49a7fe07): Error starting userland proxy: listen tcp4 0.0.0.0:5432: bind: address already in use
ERROR: Encountered errors while bringing up the project."
⚙️
1) Мой Docker файл:
FROM node:13.3-alpine
WORKDIR /app
COPY package*.json ./
RUN yarn install
COPY . .
EXPOSE 6789
CMD yarn run start
⚙️
2) docker-compose.yml:
version: '3.0'
services:
main:
container_name: main
build:
context: .
env_file:
- .env
volumes:
- .:/app
- /app/node_modules
ports:
- 6789:6789
command: yarn run start
depends_on:
- postgres
restart: always
postgres:
container_name: postgres
image: postgres:13
env_file:
- .env
environment:
PG_DATA: /var/lib/postgres/data
POSTGRES_PASSWORD: password
volumes:
- pgdata:/var/lib/postgres/data
ports:
- 5432:5432
restart: always
volumes:
pgdata:
⚙️
3) .env(здесь поменял с localhost на postgres хост, как по видео)
PORT=6789
POSTGRES_NAME=CoursesDataBase
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
SECRET_KEY=my_project_is_the_best
⚙️
4) db.js
const { Sequelize } = require('sequelize');
module.exports = new Sequelize(
process.env.POSTGRES_NAME,
process.env.POSTGRES_USER,
process.env.POSTGRES_PASSWORD, {
dialect: 'postgres',
host: process.env.POSTGRES_HOST,
port: process.env.POSTGRES_PORT
}
);
⚙️
5) index.js(кусок, могу полный кинуть)
const PORT = process.env.PORT || 6789;
const start = async () => {
try {
await sequelize.authenticate();
await sequelize.sync({alter: true}); // синхронизация
app.listen(PORT, () => console.log(Server started: ${PORT}));
} catch (e) {
console.log(e);
}
};
docker не может поднять контейнер postgres, потому что на хосте уже занят порт 5432. но тебе и не нужно его пробрасывать, если база вне контейнеров никем не используется. docker-compose создает между контейнерами сеть, и они могут между собой общаться друг с другом без проброса каких-либо портов
Вроде это усвоил Получается мне нужно из docker-compose.yml убрать ports и оно будет работать?
Я так сделал, перебилдил docker-compose build, ошибка осталась. Значит, не доделал я. Может переменные env убрать или ещё что
как теперь выглядит docker-compose.yml?
Обсуждают сегодня