1
我爲我的python應用程序編寫了Dockerfile。在卸載模式下在docker中運行python進程
要求是:
- 安裝&啓動MySQL服務器。
- 以分離模式在屏幕上運行應用程序。
下面是我的Dockerfile:
FROM ubuntu:16.04
# Update OS
RUN apt-get update
RUN apt-get -y upgrade
# Install Python
RUN apt-get install -y python-dev python-pip screen npm vim net-tools
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server python-mysqldb
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY requirements.txt /usr/src/app
RUN pip install --no-cache-dir -r requirements.txt
COPY src /usr/src/app/src
COPY ./src/nsd.ini /etc/
RUN pwd
RUN cd /usr/src/app
RUN service mysql start
RUN /bin/bash -c "chmod +x src/run_demo_app.sh && src/run_demo_app.sh"
下面是bash腳本
$ cat src/run_demo_app.sh
$ screen -dm bash -c "sleep 10; python -m src.app";
的內容的問題是MySQL沒有啓動。我需要從容器手動啓動它。
此外,屏幕變得死了,應用程序無法啓動。手動運行腳本工作正常。
感謝@Tarun Lalwani的編輯和答案。我意識到docker-compose和運行'mysql'作爲單獨的容器。但我的要求是在單個容器中運行,這就是爲什麼我試圖啓動'mysql'作爲服務。感謝指出失敗的原因。我確實想使用屏幕,並沒有看到屏幕無法使用的原因。更重要的是,我想了解爲什麼它在容器啓動時失敗。 – nebi
@nebi,看看這篇文章是否有助於http://tarunlalwani.com/post/deploying-code-inside-docker-images-statically-dynamically/。有一段使用supervisord,你應該在你的情況下使用 –