Localstack Docker启动输出Python/Linux信息,无法正常运行如何解决?
问题描述
尝试使用以下docker-compose.yml启动最新版LocalStack Docker:
version: '3.8' services: localstack: build: context: . dockerfile: Dockerfile-localstack container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}" image: localstack/localstack ports: - "127.0.0.1:4566:4566" # LocalStack Gateway - "127.0.0.1:4510-4559:4510-4559" # external services port range environment: - DEBUG=1 - PERSISTENCE=${PERSISTENCE-} - LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR-} - DOCKER_HOST=unix:///var/run/docker.sock - SERVICES=s3 volumes: - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack" - "/var/run/docker.sock:/var/run/docker.sock"
启动后未出现预期的LocalStack搭建日志,反而进入Python交互环境:
Python 3.9.15 (main, Oct 13 2022, 23:42:12) [GCC 10.2.1 20210110] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
尝试1.2.0、1.1.0版本后问题依旧,甚至直接执行官方docker run命令也出现相同情况:
docker run --rm -it -p 4566:4566 -p 4510-4559:4510-4559 localstack/localstack
本地Docker环境信息如下:
Client: Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc., v0.9.1) compose: Docker Compose (Docker Inc., v2.10.2) extension: Manages Docker extensions (Docker Inc., v0.2.9) sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., 0.6.0) scan: Docker Scan (Docker Inc., v0.19.0) Server: Containers: 18 Running: 0 Paused: 0 Stopped: 18 Images: 19 Server Version: 20.10.17 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 2 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc Default Runtime: runc Init Binary: docker-init containerd version: 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6 runc version: v1.1.4-0-g5fd4c4d init version: de40ad0 Security Options: seccomp Profile: default cgroupns Kernel Version: 5.10.124-linuxkit Operating System: Docker Desktop OSType: linux Architecture: x86_64 CPUs: 8 Total Memory: 7.773GiB Name: docker-desktop ID: 4RM2:NCLZ:PMF3:PIEQ:TAUV:UCMP:6ZVB:27WV:U2M4:YUMU:6Z3A:TTTQ Docker Root Dir: /var/lib/docker Debug Mode: true File Descriptors: 50 Goroutines: 58 System Time: 2022-10-22T13:43:10.684344556Z EventsListeners: 5 HTTP Proxy: http.docker.internal:3128 HTTPS Proxy: http.docker.internal:3128 No Proxy: hubproxy.docker.internal Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: hubproxy.docker.internal:5000 127.0.0.0/8 Live Restore Enabled: false
解决方案
出现Python交互环境的核心原因是容器启动后执行的是python命令,而非LocalStack的官方启动脚本,大概率是本地镜像被错误构建覆盖,或者自定义Dockerfile配置有误。按以下步骤修复:
清理并重新拉取官方镜像
先删除本地可能被篡改的LocalStack镜像:docker rmi -f localstack/localstack重新拉取官方镜像:
docker pull localstack/localstack修正docker-compose.yml配置
原配置中同时指定了build和image字段,Docker会优先使用本地构建的镜像覆盖官方镜像。如果不需要自定义构建,直接移除build块,修改后的配置如下:version: '3.8' services: localstack: container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}" image: localstack/localstack ports: - "127.0.0.1:4566:4566" # LocalStack Gateway - "127.0.0.1:4510-4559:4510-4559" # external services port range environment: - DEBUG=1 - PERSISTENCE=${PERSISTENCE-} - LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR-} - DOCKER_HOST=unix:///var/run/docker.sock - SERVICES=s3 volumes: - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack" - "/var/run/docker.sock:/var/run/docker.sock"检查本地自定义Dockerfile
如果确实需要自定义构建,检查本地Dockerfile-localstack的内容,确保最后执行的是LocalStack的官方启动脚本(比如/usr/local/bin/localstack start),而不是直接调用python命令。若不需要自定义,直接删除该文件。重新启动服务
使用修正后的配置启动:docker-compose up或直接用官方命令启动(建议去掉
-it避免进入交互终端,除非需要手动调试):docker run --rm -p 4566:4566 -p 4510-4559:4510-4559 localstack/localstack
内容的提问来源于stack exchange,提问作者user3151675
相关产品推荐
相关产品推荐

