docker-compose:为什么在这里调用我的 python 应用程序?

阿卜杜拉赫曼汗

我已经为此挠头一段时间了。我的 python 应用程序有以下 Dockerfile:

# Use an official Python runtime as a parent image
FROM frankwolf/rpi-python3

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app
RUN chmod 777 docker-entrypoint.sh

# Install any needed packages specified in requirements.txt
RUN pip3 install --trusted-host pypi.python.org -r requirements.txt

# Run __main__.py when the container launches
CMD ["sudo", "python3", "__main__.py", "-debug"] # Not sure if I need sudo here

docker-compose 文件:

version: "3"

services:
    mongoDB:
        restart: unless-stopped
        volumes:
            - "/data/db:/data/db"
        ports:
            - "27017:27017"
            - "28017:28017"
        image: "andresvidal/rpi3-mongodb3:latest"
    mosquitto:
        restart: unless-stopped
        ports:
            - "1883:1883"
        image: "mjenz/rpi-mosquitto"
    FG:
        privileged: true
        network_mode: "host"
        depends_on:
            - "mosquitto"
            - "mongoDB"
        volumes:
            - "/home/pi:/home/pi"
        #image: "arkfreestyle/fg:v1.8"
        image: "test:latest"
        entrypoint: /app/docker-entrypoint.sh
        restart: unless-stopped

这就是 docker-entrypoint.sh 的样子:

#!/bin/sh
if [ ! -f /home/pi/.initialized ]; then
    echo "Initializing..."
    echo "Creating .initialized"
    # Create .initialized hidden file
    touch /home/pi/.initialized

else
    echo "Initialized already!"
    sudo python3 __main__.py -debug
fi

这是我想要做的:

(这东西已经有效了)

1) 我需要一个 docker 映像,当我在容器中运行它时,它会运行我的 python 应用程序。(这有效)

2)我需要一个运行 2 个服务 + 我的 python 应用程序的 docker-compose 文件,但是在运行我的 python 应用程序之前我需要做一些初始化工作,为此我创建了一个 shell 脚本,它是 docker-entrypoint.sh。当我第一次在一台机器上部署我的应用程序时,我只想做一次初始化工作所以我正在创建一个 .initialized 隐藏文件,我在我的 shell 脚本中使用它作为检查。

我读到在 docker-compose 文件中使用入口点会覆盖提供给 Dockerfile 的任何旧入口点/cmd。所以这就是为什么在我的 shell 脚本的 else 部分我使用“sudo python3 main .py -debug”手动运行我的代码,这个 else 部分工作正常。

(这是主要问题)

在 if 部分,我没有在 shell 脚本中运行我的应用程序。我已经分别测试了 shell 脚本本身,if 和 else 语句都按我的预期工作,但是当我运行“sudo docker-compose up”时,当我的 shell 脚本第一次遇到 if 部分时,它会响应这两个语句,创建隐藏文件,然后运行我的应用程序应用程序的控制台输出显示为紫色/粉红色/淡紫色,而其他两个服务以黄色和青色打印它们的日志。我不确定颜色是否重要,但在正常情况下,我的应用程序日志始终为绿色,实际上前两个回显“Initializing”和“Creating .initialized”也是绿色的!所以我想我会提到这个细节。在这两个回声之后,

为什么/如何在 shell 脚本的 if 语句中调用我的应用程序?

(这只发生在我通过 docker-compose 运行时,而不是我只使用 sh docker-entrypoint.sh 运行 shell 脚本时)

克劳斯 D。

问题一

同时使用ENTRYPOINTCMD有一些奇怪的效果

问题二

这发生在您的容器上:

  1. 它是第一次启动。.initialized文件不存在。
  2. if情况下被执行。文件已创建。
  3. 脚本和容器结束。
  4. restart: unless-stopped选项会重新启动容器。
  5. .initialized文件现在存在,else案例运行。
  6. python3 __main__.py -debug 被执行。

顺便说一句,USERDockerfile 中命令或userDocker Compose 中的选项比sudo.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在这里调用keyup处理程序,我可以阻止它吗?

来自分类Dev

为什么python在这里运行?

来自分类Dev

为什么python在这里运行?

来自分类Dev

无法使用docker-compose在其他端口中运行Python flask应用程序

来自分类Dev

使用docker-compose的python应用程序的Nginx反向代理

来自分类Dev

Python 应用程序无法连接到 PostgreSQL Docker

来自分类Dev

为什么在这里使用Python打印花括号?

来自分类Dev

(python)为什么.append()在这里不起作用?

来自分类Dev

为什么Python在这里打印出多个值?

来自分类Dev

为什么python在这里复制列表?

来自分类Dev

如何从Python脚本调用应用程序

来自分类Dev

Python 3:我在这里做错了什么?

来自分类Dev

Python3-我在这里做错了什么?

来自分类Dev

我在这里做错了什么?~~ Python中的Tkinter

来自分类Dev

Python3-我在这里做错了什么?

来自分类Dev

Terraform:在EKS / ECS上部署Docker Compose应用程序

来自分类Dev

用于 Web 应用程序 devops 的示例 docker compose 设置

来自分类Dev

Python Dropbox应用程序,我应该如何处理应用程序密钥和应用程序机密?

来自分类Dev

我的python gtk3应用程序的桌面文件未加载该应用程序

来自分类Dev

Python:%s 在这里做什么?

来自分类Dev

为什么tty = true(在docker-compose.yml中)在Gin应用程序上突出显示日志?

来自分类Dev

为什么我的python Slack应用程序永远运行而什么也没有发生?

来自分类Dev

为我的项目运行图像时出现错误。在这里,我正在尝试 dockerize 我的应用程序

来自分类Dev

Rails:从Rails应用程序中为Python调用virtualenv

来自分类Dev

Rails:从Rails应用程序中为Python调用virtualenv

来自分类Dev

我需要减慢python tkinter应用程序中的循环

来自分类Dev

CSS未从我的Python / Flask应用程序链接

来自分类Dev

在Python中设置我的应用程序路径的正确方法

来自分类Dev

Flask + Docker 应用程序 - 当我运行 docker run 时容器死了

Related 相关文章

  1. 1

    为什么在这里调用keyup处理程序,我可以阻止它吗?

  2. 2

    为什么python在这里运行?

  3. 3

    为什么python在这里运行?

  4. 4

    无法使用docker-compose在其他端口中运行Python flask应用程序

  5. 5

    使用docker-compose的python应用程序的Nginx反向代理

  6. 6

    Python 应用程序无法连接到 PostgreSQL Docker

  7. 7

    为什么在这里使用Python打印花括号?

  8. 8

    (python)为什么.append()在这里不起作用?

  9. 9

    为什么Python在这里打印出多个值?

  10. 10

    为什么python在这里复制列表?

  11. 11

    如何从Python脚本调用应用程序

  12. 12

    Python 3:我在这里做错了什么?

  13. 13

    Python3-我在这里做错了什么?

  14. 14

    我在这里做错了什么?~~ Python中的Tkinter

  15. 15

    Python3-我在这里做错了什么?

  16. 16

    Terraform:在EKS / ECS上部署Docker Compose应用程序

  17. 17

    用于 Web 应用程序 devops 的示例 docker compose 设置

  18. 18

    Python Dropbox应用程序,我应该如何处理应用程序密钥和应用程序机密?

  19. 19

    我的python gtk3应用程序的桌面文件未加载该应用程序

  20. 20

    Python:%s 在这里做什么?

  21. 21

    为什么tty = true(在docker-compose.yml中)在Gin应用程序上突出显示日志?

  22. 22

    为什么我的python Slack应用程序永远运行而什么也没有发生?

  23. 23

    为我的项目运行图像时出现错误。在这里,我正在尝试 dockerize 我的应用程序

  24. 24

    Rails:从Rails应用程序中为Python调用virtualenv

  25. 25

    Rails:从Rails应用程序中为Python调用virtualenv

  26. 26

    我需要减慢python tkinter应用程序中的循环

  27. 27

    CSS未从我的Python / Flask应用程序链接

  28. 28

    在Python中设置我的应用程序路径的正确方法

  29. 29

    Flask + Docker 应用程序 - 当我运行 docker run 时容器死了

热门标签

归档