Запустите sequelize мигрирует в docker compose - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь до двух контейнеров с узлом и postgres (мне нужно сохранить содержимое базы данных). Следуйте приведенному ниже коду:

Dockerfile:

FROM node:lts-alpine

RUN mkdir -p /home/node/api/node_modules && chown -R node:node /home

WORKDIR /home/node/api

COPY package.json /

USER node

RUN npm i

COPY --chown=node:node . .

EXPOSE 3000

COPY ./docker-entrypoint.sh /docker-entrypoint.sh

RUN chmod +x /docker-entrypoint.sh

ENTRYPOINT ["/docker-entrypoint.sh"]

docker -входная точка. sh:

#!/bin/sh

npx sequelize-cli db:migrate

npm run dev

Ну, здесь я не знаю, как чтобы запустить миграцию, потому что на моем компьютере я запускаю только "sequelize db: migrate" , у меня есть скрипт в пакете. json тоже "migrate: dev": "NODE_ENV = развитие sequelize например, db: migrate "

.

И docker -compose.yml:

version: '3'

services:
    app-app:
        container_name: app-app
        build: '.'
        volumes:
            - .:/home/node/api
            - /home/node/api/node_modules
        depends_on:
            - postgres-app
        networks:
            - app-connect
        ports:
            - '3000:3000'

    postgres-app:
        container_name: postgres-app
        image: postgres:11
        restart: unless-stopped
        volumes:
            - postgres-app-data:/data
        environment:
            POSTGRES_DB: ${DATABASE}
            POSTGRES_USER: ${DB_USER}
            POSTGRES_PASSWORD: ${DB_PASS}
        networks:
            - app-connect

volumes:
    postgres-app-data:

networks:
    app-connect:
        driver: bridge

Но миграция еще не запущена. У меня ошибка при попытке запустить docker -entrypoint. sh:

chmod: /docker-entrypoint.sh: Operation not permitted
ERROR: Service 'app-app' failed to build: The command '/bin/sh -c chmod +x /docker-entrypoint.sh' returned a non-zero code: 1

Если я удаляю все эти элементы и запускаю только npm, запускается сразу все работы, но когда я пытаюсь получить доступ Контейнер приложения для запуска миграции показывает мне ошибку:

docker exec -it 351 npm run migrate:dev                                                                 

> app@1.0.0 migrate:dev /home/node/api
> NODE_ENV=development sequelize db:migrate


Sequelize CLI [Node: 12.14.0, CLI: 5.5.1, ORM: 5.21.3]

Loaded configuration file "src/config/database.js".
Using environment "development".

ERROR: getaddrinfo ENOTFOUND postgres

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! app@1.0.0 migrate:dev: `NODE_ENV=development sequelize db:migrate`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the app@1.0.0 migrate:dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/node/.npm/_logs/2020-01-09T12_43_32_377Z-debug.log

Как я могу это сделать? Спасибо!

1 Ответ

1 голос
/ 15 января 2020

Таким образом, согласно комментариям выше, проблема заключалась в том, что DB_HOST был установлен с неправильным значением.

В этом случае DB_HOST должен иметь значение имени службы: postgres -app.

...