【发布时间】:2017-10-29 18:04:29
【问题描述】:
我正在尝试启动使用 docker-compose build 创建的 Docker 映像。
在正确的目录中,docker-compose build 工作正常
在正确的目录中,docker-compose up 也可以正常工作。
我有一个docker-compose.yml,如下所示:
version: '3'
services:
db:
image: postgres
web:
build: .
image: apostx-cc-backoffice-work
command: python3 backendworkproj/manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
问题是当我运行时:
docker run -d --name apostx-cc-backoffice-work apostx-cc-backoffice-work
容器根本没有启动 - 我没有收到任何消息或任何东西..
docker ps 没有显示任何已启动的容器。
我该如何开始?
TIA
塞尔吉更新
@Sergiu - 这是您的建议的结果..
$ docker run -d --name test apostx-cc-backoffice-work
07f012c11047b34834c5dac840aefcb8164355b9a65d6beca43350f450d5b7fb
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
这是信息:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07f012c11047 apostx-cc-backoffice-work "/bin/bash" 11 minutes ago Exited (0) 11 minutes ago test
dd42f4b957e7 apostx-cc-backoffice-work "/bin/bash" About an hour ago Exited (0) About an hour ago apostx-cc-backoffice-work
我想知道这是否是解决问题的关键: Deploying docker-compose containers
这是一个更新:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07f012c11047 apostx-cc-backoffice-work "/bin/bash" 36 minutes ago Exited (0) 36 minutes ago test
dd42f4b957e7 apostx-cc-backoffice-work "/bin/bash" About an hour ago Exited (0) About an hour ago apostx-cc-backoffice-work
1e3298e55da1 wmaker-locl-officework "catalina.sh run" 5 months ago Exited (143) 5 days ago
当我查看退出项目的日志时会发生这种情况:
$ docker logs 07f012c11047
<no output>
$ docker logs dd42f4b957e7
<no output>
BMitch 更新
@BMitch - 感谢您的回复。这是我正在关注的文档之一:Dockerizing the DJango Application
是否可以转换使用以下方式创建的 Docker 项目:
docker-compose build
以便它生成可以使用运行的图像
docker run -d --name <label_name> <image_name>
在docker-compose.yml 文件中,我指定了以下选项:
image: apostx-cc-backoffice-work 以便生成图像。
关于我在 Dockerfile 中的 CMD 行,您是正确的。
It was :
`CMD ["/bin/bash"]`
Now it is
`CMD [ "python3", "/code/backendworkproj/manage.py runserver 0.0.0.0:8000" ]`
Dockerfile如下(去掉了一些东西使其更短):
FROM python:3.6.2
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
[..snip ..]
# the code built/referenced when using the "docker-compose build" command
ADD . /code/
CMD [ "python3", "/code/backendworkproj/manage.py runserver 0.0.0.0:8000" ]
在
docker-compose.yml中,我使用了下面的选项,以便图像 将被创建:image: apostx-cc-backoffice-work (pls see `docker-compose.yml` above)
以下是运行的命令
# ls
appmaster.pth backendworkproj backendworkproj@tmp docker-compose.yml Dockerfile requirements.txt
# ls backendworkproj
appmasterdata backendworkapp db.sqlite3 manage.py static
authorization backendworkproj generalinfo README.md usethis.txt
# docker run -d --name apostx-cc-backoffice-work apostx-cc-backoffice-work
dbc73335779a89b4fb31e91268c99b0e3f2b2ecbabe7bf136f82e11acbe70ee5
# docker container logs dbc73335779a
python3: can't open file '/code/backendworkproj/manage.py runserver 0.0.0.0:8000': [Errno 2] No such file or directory
我已经在 Dockerfile 中进行了更改,但仍然出现“无法打开文件”错误:
=> CMD [ "python3", "full-path-to-the-file/manage.py runserver 0.0.0.0:8000" ]
=> CMD [ "python3", "backendworkproj/manage.py runserver 0.0.0.0:8000" ]
=> CMD [ "python3", "manage.py runserver 0.0.0.0:8000" ]
我不能这样做:
`sudo docker exec -i -t 7bb5d8bfd45a /bin/bash`
因为容器没有保持足够长的时间来进行任何故障排除。
我想创建一个映像文件以在 Deployment 机器上使用,以避免将整个目录复制到 Deployment 机器(这似乎是使用“docker-compose up”时的要求)
这可能吗?如果没有,有没有办法使用“docker-compose up”来做到这一点,这样就不必将所有代码复制到部署机器上?
TIA
BMitch 更新
再次感谢@BMitch
正如您所说,该命令在“停止的容器”上起作用。
# docker run -it apostx-cc-backoffice-work /bin/bash
root@5d66b0b648e9:/code# ls
Dockerfile appmaster.pth backendworkproj backendworkproj@tmp docker-compose.yml requirements.txt
root@5d66b0b648e9:/code/backendworkproj# ls
README.md authorization backendworkproj generalinfo static
appmasterdata backendworkapp db.sqlite3 manage.py usethis.txt
root@5d66b0b648e9:/code/backendworkproj# pwd
/code/backendworkproj
root@5d66b0b648e9:/code/backendworkproj# ls -alrt
total 208
-rw-r--r-- 1 root root 11676 Oct 29 17:27 usethis.txt
drwxr-xr-x 4 root root 4096 Oct 29 17:27 static
-rw-r--r-- 1 root root 813 Oct 29 17:27 manage.py
drwxr-xr-x 4 root root 4096 Oct 29 17:27 generalinfo
-rw-r--r-- 1 root root 155648 Oct 29 17:27 db.sqlite3
drwxr-xr-x 3 root root 4096 Oct 29 17:27 backendworkproj
drwxr-xr-x 5 root root 4096 Oct 29 17:27 backendworkapp
drwxr-xr-x 5 root root 4096 Oct 29 17:27 authorization
drwxr-xr-x 4 root root 4096 Oct 29 17:27 appmasterdata
-rw-r--r-- 1 root root 0 Oct 29 17:27 README.md
drwxr-xr-x 2 root root 4096 Oct 29 17:27 .idea
drwxr-xr-x 8 root root 4096 Oct 29 17:27 .git
drwxr-xr-x 10 root root 4096 Oct 29 21:56 .
drwxr-xr-x 1 root root 4096 Oct 29 23:32 ..
在Dockerfile 中,我对 CMD 进行了更改:
CMD [ "python3", "/code/backendworkproj/manage.py 运行服务器 0.0.0.0:8000"]
我没有对docker-compose.yml 进行任何更改,然后运行以下命令:
docker-compose build
docker rm -f apostx-cc-backoffice-work
最后,我运行了下面的操作系统命令(但仍然出现错误)
# docker run -it --name apostx-cc-backoffice-work apostx-cc-backoffice-work
python3: can't open file '/code/backendworkproj/manage.py runserver 0.0.0.0:8000': [Errno 2] No such file or directory
# docker run -it apostx-cc-backoffice-work /bin/bash
root@c70ae7ea289e:/code# which runserver
root@c70ae7ea289e:/code# ls /code/backendworkproj/manage.py
/code/backendworkproj/manage.py
root@c70ae7ea289e:/code# which runserver
root@c70ae7ea289e:/code# python --version
Python 3.6.2
【问题讨论】:
-
也许它不起作用,因为你在只需要一个时尝试 2 传递 2 个名称?
-
我在做“docker run -d --name
”
标签: docker