我在docker容器中开发了一个烧瓶应用程序。我的代码的一个最小示例具有以下结构:
+- myproject
+- Flask-App
+- src
+- __init__.py
+-__init__.py
+- Dockerfile
+- requirements.txt
+- wsgi.py
+- docker-compose.yml
我把这个例子做得更简单(见第二次编辑)
Attaching to flask
flask | Traceback (most recent call last):
flask | File "wsgi.py", line 1, in <module>
flask | from src import create_app
flask | ImportError: cannot import name 'create_app' from 'src' (unknown location)
flask exited with code 1
version: '3.1'
services:
flask:
build:
context: ./Flask-App
dockerfile: Dockerfile
container_name: flask
ports:
- "5000:5000"
volumes: # produces error
- ./src/:/home/appuser/src/ # produces error
from src import create_app
app = create_app()
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Flask==1.1.1
flask-app/dockerfile
FROM python:3.7.3-stretch
COPY ./requirements.txt /tmp/
RUN pip install -r /tmp/requirements.txt
RUN useradd --home /home/appuser appuser
WORKDIR /home/appuser
USER appuser
COPY ./ ./
# Run the application
ENTRYPOINT ["python"]
CMD ["wsgi.py"]
flask-app/src/__init__.py
from flask import Flask
def create_app():
app = Flask(__name__)
@app.route('/')
def index():
return "Hello World"
return app
flask-app/dockerfile
FROM python:3.7.3-stretch
COPY ./requirements.txt /tmp/
RUN pip install -r /tmp/requirements.txt
RUN useradd --home /home/appuser appuser
WORKDIR /home/appuser
USER appuser
COPY ./ ./
RUN echo $(ls -alt /home/appuser) # newly added
# Run the application
ENTRYPOINT ["python"]
CMD ["wsgi.py"]
total 24
drwxr-xr-x 1 root root 4096 Oct 22 11:55 .
-rwxr-xr-x 1 root root 345 Oct 22 11:55 Dockerfile
-rwxr-xr-x 1 root root 117 Oct 22 11:25 wsgi.py
-rwxr-xr-x 1 root root 0 Oct 22 11:17 __init__.py
drwxr-xr-x 2 root root 4096 Oct 22 11:17 src
drwxr-xr-x 1 root root 4096 Oct 21 11:15 ..
-rwxr-xr-x 1 root root 12 Oct 21 11:14 requirements.txt
flask_1 | Traceback (most recent call last):
flask_1 | File "app.py", line 1, in <module>
flask_1 | from src import create_app
flask_1 | ImportError: cannot import name 'create_app' from 'src' (unknown location)
version: '3'
services:
flask:
build:
context: ./Flask-App
volumes:
- ./Flask-App/src:/usr/src/app/sr
class MyTest:
def my_print_fnc(self):
print("Hello World")
def create_app():
return MyTest()
from src import create_app
app = create_app()
if __name__ == '__main__':
app.my_print_fnc()
flask-app/dockerfile
FROM python:3.7.3-stretch
COPY . /usr/src/app
WORKDIR /usr/src/app
# Run the application
ENTRYPOINT ["python", "app.py"]
docker-compose.yml
version: '3'
services:
flask:
build:
context: ./Flask-App
volumes:
- ./Flask-App/src:/usr/src/app/src
您的docker-compose.yml文件有问题,尤其是挂载卷的方式。将其更改为:
volumes: :
- './Flask-App:/home/appuser'
问题内容: PostgreSQL 9.5的upsert的正确语法,下面的查询显示错误,为什么? 我尝试更改为 然后显示错误,但是 我不想将gallery_id或category_id设置为唯一, 因为我想确保两列都相同然后进行更新.... 如何正确地在postgres 9.5中进行upsert? 如果需要唯一列,我应该使用其他方法,怎么办? 我想确保多列都冲突然后进行更新,正确的用法是什么 表(c
问题内容: 混合使用PHP和HTML时,应使用什么合适的缩进样式?我要缩进以使输出的HTML具有正确的缩进,还是使PHP / HTML混合看起来格式正确(从而更易于阅读)? 例如,假设我有一个循环输出表行。以下哪一项是正确的? PHP / HTML组合看起来正确: 输出的HTML看起来正确: 我发现,遇到这种情况时(经常),我没有标准的样式可以使用。我知道可能没有“正确”的答案,但我很想听听其他开
我想挂载我的usb驱动器到一个正在运行的docker实例,手动备份一些文件。 我知道的特性,但这会创建一个新的容器。注意:它是一个nextcloudpi容器。
问题内容: 我正在使用Docker容器进行Django开发,并且该容器与Nginx一起运行Gunicorn。我希望代码更改能够自动加载,但我可以加载它们的唯一方法是使用docker- compose()进行重建。“构建”的问题在于它会重新运行我所有的pip安装。 我正在使用Gunicorn 标志,这显然应该可以完成我想要的操作。这是我的Docker配置文件: 我已经尝试了一些其他的泊坞窗命令(的,
问题内容: 这就是我的: 工作正常,但是,当我启动容器时,看到以下内容: 显然,这不是我想要的。据我了解,问题是默认情况下不会运行。这就是为什么Ruby不是来自RVM安装的原因。我该如何解决? 问题答案: 长话短说: 命令不会将bash作为登录shell启动。 说明: 当您运行没有它的invoke庆典,这使得选项行为就好像它被调用作为登录shell,初始化依赖于-ing分词或和初始化是或或任何其他
问题内容: 我的容器中包含所有网站代码。 我的Dockerfile使用git下载代码,并将其作为映像的一部分,以便更轻松地部署到生产环境。 但是,如何在开发中编辑代码?我认为使用卷是解决方案,例如:。但是它将覆盖容器中的目录。如果是我第一次运行它,它将清空它,因为主机中没有任何东西。因此,我在Dockerfile中所做的一切都丢失了。 我还希望在应用程序的不同版本之间共享目录和文件,例如:。这是专