我正在使用碼頭工具創建,其中一個圖像使用dockerfile構建,其他圖像是標準圖像。由dockerfile('網站')控制的圖像具有 COPY。/gp_flask (該目錄是早先創建的)。 它工作正常時碼頭工人使用碼頭機部署時不起作用
docker-compose up --build
發生在我的Ubuntu機器上。它複製一個目錄結構。
然而,當我使用EC2泊塢窗機,有目錄中沒有的內容(在泊塢窗) 我的COPY後立即加入
RUN ls -la /gp_flask
,並正確顯示的所有內容。 接下來的唯一命令是EXPOSE
端口和CMD ["/usr/bin/supervisord"]
COPY複製supervisord和nginx配置文件的命令可以正常工作。
尚未構建過程完成後,其他容器的一個失敗,因爲它無法找到/ gp_flask的東西,果然如我 泊塢窗,構成EXEC網站/斌/慶典 目錄/ gp_flask 現在是空的。
這隻發生在我在碼頭機環境中運行時。 docker-compose在我的本地機器上工作正常。
另外,如果我使用泊塢窗機,並與eval "$(docker-machine env gpflask)"
啓動兩發炮彈,然後在一個我做的:
docker build -t gp_flask .
,並在其他:
docker exec -it mad_fermat /bin/bash
然後我可以看到COPY (在EC2泊塢窗引擎實例上)。
所以這意味着docker-compose在遠程docker引擎上有所不同。 COPY
之後的RUN ls
的成功似乎表明該副本正在工作,但在構建過程中稍後的映像將其刪除,但基本上沒有以下命令。
FROM python:3.5
MAINTAINER Tim Richardson <[email protected]>
RUN apt-get update && apt-get install -qq -y \
build-essential libpq-dev --no-install-recommends
RUN apt-get install -qq -y vim --no-install-recommends
RUN apt-get install -qq -y nginx --no-install-recommends
RUN apt-get install -qq -y supervisor --no-install-recommends
RUN apt-get install -qq -y python3-dev python3-pip python3-setuptools --no-insta
ll-recommends
# RUN apt-get install -qq -y openssh-server --no-install-recommends
#RUN mkdir -p /var/run/sshd
COPY requirements.txt requirements.txt
COPY requirements requirements
RUN pip3 install -r requirements.txt
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
ENV INSTALL_PATH /gp_flask
RUN mkdir -p $INSTALL_PATH
COPY nginx.conf /etc/nginx/nginx.conf
RUN rm /etc/nginx/sites-enabled/default
WORKDIR $INSTALL_PATH
COPY . /gp_flask
RUN ls -la /gp_flask
EXPOSE 8000
EXPOSE 5000
EXPOSE 5001
#note that if you change the name of the app, you have to change the command lin
e to gunicorn
#gunicorn is started in supervisord setup
#CMD gunicorn -b 0.0.0.0:8001 --access-logfile - "dear_flask.app:create_app()"
CMD ["/usr/bin/supervisord"]
,這裏是泊塢窗,compose.yml
version: '2'
services:
postgres:
image: 'postgres:9.5'
env_file:
- '.env'
volumes:
- 'postgres:/var/lib/postgresql/data'
ports:
- '5432:5432'
redis:
image: 'redis:3.0-alpine'
command: redis-server --requirepass devpassword
volumes:
- 'redis:/var/lib/redis/data'
ports:
- '6379:6379'
website:
build: .
command: >
/usr/bin/supervisord
env_file:
- '.env'
volumes:
- '.:/gp_flask'
ports:
- '8000:8000'
- '5000:5000'
- '5001:5001'
celery:
build: .
command: celery worker -l debug -A dear_flask.dear.tasks
env_file:
- '.env'
volumes:
- '.:/gp_flask'
volumes:
postgres:
redis:
,這裏是supervisord.conf
[supervisord]
logfile_maxbytes=50MB
logfile_backups=10
logfile=/tmp/supervisord.log
loglevel=info
pidfile=/tmp/supervisord.pid
nodaemon=true
minfds=1024
minprocs=200
directory=/gp_flask/
[supervisorctl]
#[program:sshd]
#command=/usr/sbin/sshd -D
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
#command=ls # a dummy command convenient for disabling nginx
[program:gunicorn]
command=/usr/local/bin/gunicorn -b 127.0.0.1:8001 "dear_flask.app:create_app()"
directory=/gp_flask/
您是否能夠驗證您剛剛構建的相同圖像正在運行?您是否會列出遠程構建,標記,推送和運行映像的步驟,以及運行時查看該文件夾在運行時是否爲空的命令?用compose,你會顯示那個yml的內容,也許一個卷掛載在/ gp_flask。 – BMitch
當我執行然後簡單地執行 ,然後在另一個終端重複eval,然後在容器上啓動一個shell COPY顯然有效。因此,即使在遠程EC2實例上,Dockerfile也不錯。我會將.yml添加到問題中,但是當我在我的linux機器上本地運行它時,docker-compose會發揮作用。當docker-machine參與時,我只遇到了這個問題。 –
至於我在做docker-compose的時候看到/ gp_flask是空的,我只是簡單地執行docker-compose exec website/bin/bash –