无法连接到已部署的容器

时间:2019-09-02 22:56:38

标签: amazon-web-services docker

我在AWS EC2上部署了Docker容器,并将端口5001暴露给世界,但是当我尝试在18.130.178.90:5001/users上查看时,我得到了Unable to connect

5001    tcp 0.0.0.0/0   ✔

入站端口5001暴露。由AWS IPv4 Public IP 18.130.178.90

分配的公共IP

我可以尝试什么?

enter image description here

请求的屏幕截图:

enter image description here

Dockerfile:

FROM python:3.6.9-alpine
LABEL maintainer="mark.alexa@gmail.com"

RUN apk update && apk add --virtual build-deps gcc python-dev musl-dev && \
    apk add postgresql-dev && apk add netcat-openbsd

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip install -r requirements.txt

COPY ./entrypoint.sh /usr/src/app/entrypoint.sh
RUN chmod +x /usr/src/app/entrypoint.sh

COPY . /usr/src/app

CMD ["/usr/src/app/entrypoint.sh"]

Docker-compose.yml:

version: '3.7'

services:
  users:
    build:
      context: ./users
      dockerfile: Dockerfile

    ports:
      - 5001:5000
    environment:
      - FLASK_ENV=production
      - APP_SETTINGS=project.config.DevelopmentConfig
      - DATABASE_URL=postgres://postgres:postgres@users-db:5432/users_prod
      - DATABASE_TEST_URL=postgres://postgres:postgres@users-db:5432/users_test
    depends_on:
      - users-db

  users-db:
    build:
      context: './users/project/db'
      dockerfile: Dockerfile
    ports:
      - 5435:5432
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres

2 个答案:

答案 0 :(得分:0)

由于您要尝试连接到容器,所以我假设您已使用AWS ECS-EC2选项部署了该容器,对于您要与该容器建立的特定连接,我假设这是一个安全组问题。我将首先检查安全组。此外,请确保将当前正在运行的Docker容器的物理主机映射到5001上的容器端口的端口。因此,您应该看到连接到Docker容器端口的物理主机端口。让我知道是否有帮助。

答案 1 :(得分:0)

问题由ssh确定到已部署的容器中。容器使用了错误的证书。我在本地运行void writeFile(String text) { try { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( openFileOutput(FILENAME, MODE_PRIVATE))); bw.write(text); bw.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } void readFile() { try { BufferedReader br = new BufferedReader(new InputStreamReader( openFileInput(FILENAME))); text.setText(""); String str = ""; while ((str = br.readLine()) != null) { text.setText(text.getText() + str); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } ,然后它创建了新证书,这些证书已应用于已部署的容器,现在我可以连接到它了。