使用 docker-compose 在本地运行glue容器

问题描述 投票:0回答:2

我想使用

pyspark-glue-container
中提到的命令
REPL shell (Pyspark)
从胶水容器运行 $ docker run -it -v ~/.aws:/home/glue_user/.aws -e AWS_PROFILE=$PROFILE_NAME -e DISABLE_SSL=true --rm -p 4040:4040 -p 18080:18080 --name glue_pyspark amazon/aws-glue-libs:glue_libs_3.0.0_image_01 pyspark,但我不想以
docker run
运行,我想以
docker-compose
运行。因此创建了以下撰写文件:

container_name: "glue_container"
image: amazon/aws-glue-libs:glue_libs_2.0.0_image_01
environment:
  DISABLE_SSL: "true"
ports:
  - 4040:40404
  - 18080:18080
command: pyspark
volumes:
  - ${PWD}/local_path_to_workspace:/home/glue_user/workspace/

但是我无法启动并运行glue pyspark shell?但容器退出时出现错误。

amazon-web-services docker-compose aws-glue
2个回答
0
投票

我猜你遇到了“卷必须是映射”错误

尝试这种格式

services:
  pyspark_repl:
    image: amazon/aws-glue-libs:glue_libs_2.0.0_image_01
    environment:
      DISABLE_SSL: "true"
    ports:
      - 4040:40404
      - 18080:18080
    command: pyspark
    volumes: 
      - ${PWD}:/home/glue_user/workspace/

然后像这样运行

docker-compose run --rm pyspark_repl

0
投票

问题是 Docker Compose 和

pyspark
命令如何在容器内交互。

当您直接在 Docker 容器中运行

pyspark
时(如下所示),它通常需要一个交互式终端会话。

docker run -it -v ~/.aws:/home/glue_user/.aws -v $WORKSPACE_LOCATION:/home/glue_user/workspace/ -e AWS_PROFILE=$PROFILE_NAME -e DISABLE_SSL=true --rm -p 4040:4040 -p 18080:18080 --name glue_pyspark amazon/aws-glue-libs:glue_libs_4.0.0_image_01 pyspark

将以下说明添加到您的撰写中可以解决该问题。

tty: true
stdin_open: true

这是我的撰写文件

services:
  glue_pyspark:
    image: amazon/aws-glue-libs:glue_libs_4.0.0_image_01
    command: ["pyspark"]
    volumes:
      - ~/.aws:/home/glue_user/.aws:ro
      - $WORKSPACE_LOCATION:/home/glue_user/workspace/
    environment:
      - AWS_PROFILE=${AWS_PROFILE}
      - DISABLE_SSL=true
    ports:
      - "4040:4040"
      - "18080:18080"
    tty: true
    stdin_open: true
    deploy:
      restart_policy:
        condition: on-failure

终于可以这样称呼了

docker compose --env-file .env.local up -V glue_pyspark

# or in detached mode
docker compose --env-file .env.local up -d -V glue_pyspark

当您在容器内使用 jupyter 时,这同样适用

command: ["/home/glue_user/jupyter/jupyter_start.sh"]
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.