Не удалось развернуть Angular с Docker и Nginx на AWS EC2

Вот структура папки Docker:

.
├── default.conf
├── dist
│   ├──3rdpartylicenses.txt
│   ├──favicon.ico
│   ├──index.html
│   ├──main.814148b8a52c3996d8f6.js
│   ├──polyfills.c72d3210425a88b28b6d.js
│   ├──runtime.6afe30102d8fe7337431.js
│   └──styles.914f038ddd792d8e3589.css
└── Dockerfile

Содержание default.conf:

server {
    listen       80;
    server_name  localhost;
    root /usr/share/nginx/html;
    charset utf-8;

    location / {
        try_files $uri /index.html;
    }
}

Содержание Dockerfile:

FROM nginx:1.13.3-alpine
COPY default.conf /etc/nginx/conf.d/
RUN rm -rf /usr/share/nginx/html/*
COPY dist/ /usr/share/nginx/html/
CMD ["nginx", "-g", "daemon off;"]

Файлы в dist взяты с ng build --prod.

Итак, я выполняю команду: docker build -t nanda_image . на ec2 ssh. А потом docker run --rm --name nanda_container -p 80:80 nanda_image.

Это результат docker container ls:

Не удалось развернуть Angular с Docker и Nginx на AWS EC2

Вывод netstat -nlp:

Не удалось развернуть Angular с Docker и Nginx на AWS EC2

После этого я считаю, что завершаю развертывание. По крайней мере, я верю. Однако, когда я пытаюсь получить доступ к развернутому мной веб-сайту, я обнаружил, что IP-адрес долго не отвечал. На самом деле хочу знать, в чем ошибка. Спасибо вам всем. :)

Создайте группу безопасности EC2 и назначьте ее серверу, на котором вы запускаете контейнер докеров, если вы еще этого не сделали. Также добавьте параметр -d в команду запуска докера. docker run -d --rm --name nanda_container -p 80:80 nanda_image

Robert Ranjan 30.05.2018 07:27

Можете ли вы получить доступ к этому сайту прямо из EC2? т.е. работает curl localhost

Ignacio Millán 30.05.2018 09:59

@RobertRanjan Я пытаюсь понять, как создать группу безопасности с помощью ssh, поскольку у меня нет пароля, который позволил бы мне напрямую войти в ec2. Все, что у меня есть, - это ключ .pem. Сообщу вам, если это сработает. Спасибо!

Mars Lee 30.05.2018 14:09

@ IgnacioMillán Я получаю curl: (7) Failed to connect to localhost port 80: Connection refused. Кажется, мне не удается развернуть ... Все еще пытаюсь понять, что происходит ... Очень признателен за ответ!

Mars Lee 30.05.2018 14:10

О группах безопасности см. Документацию EC2: docs.aws.amazon.com/AWSEC2/latest/UserGuide/…

Ignacio Millán 30.05.2018 15:14

@RobertRanjan @ IgnacioMillán Если у меня есть только файл .pem, означает ли это, что мне не разрешено назначать группу безопасности серверу? Я пытаюсь использовать команду aws ec2, но для этого мне нужны AWS Access Key ID и AWS Secret Access Key. Все, что я могу сейчас сделать, это связаться с парнем, который дает мне файл .pem?

Mars Lee 30.05.2018 15:35

Сначала убедитесь, что вы успешно создали nginx и можете получить к нему доступ с вашего ssh-терминала. Создайте контейнер с помощью команды, которую я предоставил выше, см. Добавлен флаг -d. Затем запустите curl localhost и убедитесь, что nginx запущен и доступен локально.

Robert Ranjan 30.05.2018 16:53

@RobertRanjan Во-первых, я хочу поблагодарить вас за ваше терпение. Я использую предложенный вами режим отсоединения и использую docker ps для проверки того, что контейнер действительно работает. Однако, когда я попытался установить curl localhost, он предоставил curl: (7) Failed to connect to localhost port 80: Connection refused. Означает ли это, что проблема не в группе безопасности, а в самом Nginx?

Mars Lee 30.05.2018 17:42

@RobertRanjan Хотя сервер все еще не работает, я обновил новый Dockerfile, чтобы он стал более понятным.

Mars Lee 30.05.2018 18:01

Я просто создал файлы и папки так же, как вы, создал образ докера, запустил контейнер и получил доступ к странице с помощью curl и браузера. Не знаю, почему у вас не работает. Не могли бы вы приложить к вашему вопросу снимок экрана с выводом docker run ... и netstat -nlp?

Robert Ranjan 30.05.2018 18:02

Я не вижу проблем со старым или новым Dockerfile, оба работают нормально. Пожалуйста, добавьте приведенную выше информацию к вашему вопросу.

Robert Ranjan 30.05.2018 18:05

@RobertRanjan Я приложил снимок экрана. Спасибо за помощь! Для tcp 127.0.0.1:5002 - это просто API-интерфейс python, работающий с tmux. Думаю, это не относительное, а на всякий случай.

Mars Lee 30.05.2018 18:16

Спасибо. Порт 80 прослушивает, но не уверен, почему это tcp6, а не tcp. Попробуйте curl по этой ссылке - stackoverflow.com/questions/24302447/ipv6-curl-post-request

Robert Ranjan 30.05.2018 18:23

Позвольте нам продолжить обсуждение в чате.

Robert Ranjan 30.05.2018 18:31
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
14
192
0

Другие вопросы по теме