Файлы отличаются от экспорта Docker-контейнера и Docker Составлять контейнер при транспортировке с помощью Babel? - PullRequest
0 голосов
/ 15 января 2019

Редактировать / решение

Следующая проблема возникла из-за того, что я монтировал свои локальные файлы как тома в разделе томов docker-compose. Это был устаревший фрагмент кода, который я изначально не заметил. Оставьте это на тот случай, если у кого-то есть аналогичная проблема. Спасибо за помощь.


Оригинальный вопрос

Мой Dockerfile (ниже) использует Babel для переноса кода ES6 + в код NodeJS10 перед его отправкой на продукт. Когда я запускаю docker container export myService..., файловая структура точно такая, как я ожидал, когда мои операторы import blah from /elsewhere переносятся в var blah = require('elsewhere').

Однако, когда я запускаю этот сервис локально с docker-compose и exec с чем-то вроде docker exec -it d66e623c8695 /bin/bash, я вижу синтаксис ES6 +, а не переносимый код. Это вынуждает меня запускать свой сервис локально с babel-node src/index.js, когда я бы предпочел запустить его после транспиляции с node src/index.js.

Я не смог обернуть голову, почему они разные, когда мой контейнер с docker-compose up начинается с построения моего контейнера заново.

Любые разъяснения о том, как это работает, будут высоко оценены.

Dockerfile

FROM node:10.14.1 AS base
LABEL maintainer Pat D "me@me.com"

RUN mkdir /home/app

WORKDIR /home/app

RUN mkdir /procedures
RUN mkdir ./src

COPY procedures ./procedures
COPY src ./src
COPY package.json yarn.lock .sequelizerc jest.integration.json deploy.sh Dockerrun.aws.json.template ./


# Install postgresql so we can run the migrations. -qq and piping is to keep apt-get from spamming with logs
# see https://peteris.rocks/blog/quiet-and-unattended-installation-with-apt-get/
RUN apt-get update &&\
    apt-get install -y --no-install-recommends apt-utils
RUN apt-get -qq clean  < /dev/null > /dev/null &&\
    apt-get -qq update  < /dev/null > /dev/null &&\
    apt-get -qq install -y curl postgresql libpq-dev build-essential  < /dev/null > /dev/null &&\
    rm -rf /var/lib/apt/lists/* &&\
    rm -rf /var/cache/*


# Install dependencies
FROM base AS dependencies
RUN yarn install --quiet &&\
  yarn install --silent && \
  cp -R node_modules prod_node_modules

# Build
FROM dependencies AS build
COPY . .
RUN npm run build
RUN rm -rf src
RUN ls
RUN mv dist src

RUN ls
RUN cat src/index.js
# this outputs transpiled code when i build in docker compose

EXPOSE 3030

CMD ["node", "src/index.js"]

докер-compose.yml

version: '3.7'
services:

  pat-service:
    build:
      context: .
      target: build
    working_dir: /home/app
    command: ls src
    volumes:
      - ./:/home/app
      - /home/app/node_modules
    ports:
      - 3030:3000
    environment:
      NODE_ENV: development
      PGUSER: user
      PGHOST: db
      PGPASSWORD: password
      PGDATABASE: db
      PGPORT: 5432
      LOGGLY_TOKEN: logglyuuidv4
      LOGGLY_SUBDOMAIN: lsd1
      STACK_NAME: test

networks:
 default:
   external:
     name: architecture_default
...