Редактировать / решение
Следующая проблема возникла из-за того, что я монтировал свои локальные файлы как тома в разделе томов 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