Запуск сценария оболочки для Localstack в контейнере Docker - PullRequest
0 голосов
/ 30 ноября 2018

Я использую localstack для разработки сервиса против локально.Я только что запустил их образ докера через docker run --rm -p 4567-4583:4567-4583 -p 8080:8080 localstack/localstack

А потом я вручную запустил небольшой скрипт для настройки моих S3-корзин, очередей SQS и т. Д.

Теперь я быЯ хотел бы сделать это проще для других, поэтому я решил добавить файлы Dockerfile и docker-compose.yml.К сожалению, когда я пытаюсь это запустить и запустить, используя docker-compose up, я получаю ошибку, что команда из моего скрипта установки не может подключиться к сервисам localstack.

make_bucket failed: s3://localbucket Could not connect to the endpoint URL: "http://localhost:4572/localbucket"

Dockerfile:

FROM localstack/localstack

#since this is just local dev set up, localstack doesn't require 
anything specific here.
ENV AWS_DEFAULT_REGION='[useast1]'
ENV AWS_ACCESS_KEY_ID='[lloyd]'
ENV AWS_SECRET_ACCESS_KEY='[christmas]'

COPY bin/localSetup.sh /localSetup.sh
COPY fixtures/notifications.json /notifications.json
RUN ["chmod", "+x", "/localSetup.sh"]
RUN pip install awscli

# expose service & web dashboard ports
EXPOSE 4567-4582 8080

ENTRYPOINT ["/localSetup.sh"]

docker-compose.yml

version: '3'
services:
  localstack:
    build: .
    ports:
      - "8080:8080"
      - "4567-4582:4567-4582"

localSetup.sh

#!/bin/bash

aws --endpoint-url=http://localhost:4572 s3 mb s3://localbucket
#additional similar calls but left off for brevity

Я пробовалпереключение localhost на 127.0.0.1 в моих командах сценария, но я получаю с той же ошибкой.Я, наверное, упускаю что-то глупое здесь.

1 Ответ

0 голосов
/ 12 декабря 2018

попробуйте добавить имя хоста в файл docker-compose и отредактируйте файл точки входа, чтобы отразить это имя хоста.

docker-compose.yml

version: '3'
services:
  localstack:
    build: .
    hostname: localstack
    ports:
      - "8080:8080"
      - "4567-4582:4567-4582"

localSetup.sh

#!/bin/bash

aws --endpoint-url=http://localstack:4572 s3 mb s3://localbucket

Это был мой docker-compose-dev.yaml, который я использовал для тестирования приложения, использующего localstack.Я использовал команду docker-compose -f docker-compose-dev.yaml up, я также использовал ту же localSetup.sh, что и вы.

version: '3'
services:

  localstack:
    image: localstack/localstack
    hostname: localstack
    ports:
      - "4567-4584:4567-4584"
      - "${PORT_WEB_UI-8082}:${PORT_WEB_UI-8082}"
    environment:
      - SERVICES=s3
      - DEBUG=1
      - DATA_DIR=${DATA_DIR- }
      - PORT_WEB_UI=${PORT_WEB_UI- }
      - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
    networks:
      - backend

  sample-app:
    image: "sample-app/sample-app:latest"
    networks:
      - backend
    links:
      - localstack
    depends_on:
      - "localstack"

networks: 
  backend:
    driver: 'bridge'
...