Использование docker-compose для построения конвейера разработки и развертывания - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь создать файл Docker Compose для построения моего локального конвейера разработки и развертывания для проекта ReactJS.

Некоторый контекст : Локально я запускаю сервер на 3000 порту. Для развертывания я экспортирую статические артефакты, развертываю их на S3 и делаю недействительными мои файлы CloudFront.

Я создал Docker Image , который содержит узел и интерфейс командной строки AWS, и я использую его в качестве своей базы FROM Image.

Dockerfile

FROM a6kme/node-aws-cli:v1

WORKDIR /app

COPY package*.json /app/
RUN npm install

EXPOSE 3000

докер-compose.yml

version: '3'
volumes:
  esnextwebjourney_node_modules:
services:
  esnextwebjourney:
    build: .
    volumes:
      - .:/app
      - esnextwebjourney_node_modules:/app/node_modules
    ports:
      - 3000:3000
    command: >
      sh -c "npm run build && npm run start"

Что работает, но каждый раз, когда мне нужно идти и обновлять команду, нужно либо запустить сервер npm run build && npm run start, либо развернуть его на s3 и CloudFront, т.е. npm run build && npm run export && npm run deploy.

Мой вопрос - Могу ли я создать файл docker-compose.yml, как показано ниже, и тогда я могу позвонить docker-compose run start --build или docker-compose run deploy --build, и это будет служить обоим моим целям.

version: '3'
volumes:
  esnextwebjourney_node_modules:
services:
  build:
    build: .
    volumes:
      - .:/app
      - esnextwebjourney_node_modules:/app/node_modules
    command: npm run build
  start:
    depends_on:
      - build
    command: npm run start
    ports:
      - 3000:3000
  export:
    depends_on:
      - build
    command: npm run export
  deploy:
    depends_on:
      - export
    command: npm run deploy

1 Ответ

1 голос
/ 01 апреля 2019

Вы можете создать переопределение:

docker-compose.override.yml:

version: '3'

services:
  esnextwebjourney:
    command: "npm run build && npm run export && npm run deploy"

Когда вы хотите экспортировать, вы можете запустить: docker-compose up -d --buildЕсли вы хотите только развернуть: docker-compose -f docker-compose.yml up -d --build

Вторая версия игнорирует переопределение.

Другим решением будет использование средыпеременная для команды.Таким образом, ваш docker-compose.yml всегда остается неизменным, и вам нужно только экспортировать новую переменную среды перед ее запуском.Вы можете автоматизировать это с помощью сценария оболочки.

То, что вы хотите создать, также может работать, если вы создадите именованный том и поделитесь им между ВСЕМИ службами.Но мне больше нравится мое решение:)

Надеюсь, это сработает для вас.

...