我正在尝试启动使用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 - 感谢您的回复。这是我所关注的文件之一: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中的更改,仍然可以打开&#34;无法打开文件&#34;错误:
=&GT; CMD [&#34; python3&#34;,&#34; full-path-to-the-file / manage.py runserver 0.0.0.0:8000" ]
=&GT; CMD [&#34; python3&#34;,&#34; backendworkproj / manage.py runserver 0.0.0.0:8000" ]
=&GT; CMD [&#34; python3&#34;,&#34; manage.py runserver 0.0.0.0:8000" ]
我不能做任何事情:
`sudo docker exec -i -t 7bb5d8bfd45a /bin/bash`
因为容器没有足够长的时间来进行任何故障排除。
我想创建一个在Deployment机器上使用的映像文件,以避免将整个目录复制到Deployment机器(这在使用&#34; docker-compose up&#34时似乎是一个要求; )
这可能吗?如果没有,有没有办法用&#34; docker-compose up&#34;这样就不必将所有代码都复制到部署机器上了吗?
TIA
再次感谢@BMitch
该命令适用于&#34;已停止的容器&#34;就像你说的那样。
# 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 [&#34; python3&#34;,&#34; /code/backendworkproj/manage.py runserver 0.0.0.0:8000" ]
我没有对docker-compose.yml
进行任何更改,然后运行以下内容:
docker-compose build
docker rm -f apostx-cc-backoffice-work
最后,我在下面运行了OS命令(但仍然出现错误)
# 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
答案 0 :(得分:0)
谢谢凯西,
因此,根据您的新编辑,我可以看到您的容器运行,然后一旦完成该过程,就会退出
如果您要执行docker ps -a
,您应该会看到运行并退出容器。
为了测试我所说的是真的,我建议您将命令更改为 / bin / true 或 / bin / bash < / em>查看容器是否继续运行
修改强>:
此外,我正在寻找你想要做的事情,我找到了你可能会觉得有用的东西:
https://howchoo.com/g/y2y1mtkznda/getting-started-with-docker-compose-and-django
https://blog.syncano.io/configuring-running-django-celery-docker-containers-pt-1/
编辑2:
要了解您可以docker logs 07f012c11047
发生的事情,这会让您更好地了解问题所在
答案 1 :(得分:0)
命令
docker run -d --name apostx-cc-backoffice-work apostx-cc-backoffice-work
将使用默认命令从您的映像启动容器。来自docker ps -a
输出:
$ 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
该命令是/bin/bash
,您在没有定义任何输入的情况下运行该命令。默认情况下,当bash在没有任何输入的情况下运行时,它会立即退出。容器的内部和外部都是一样的:
$ bash </dev/null
$
评论&#34;容器根本没有开始&#34;是不准确的。它确实开始,并立即退出。容器中没有日志,就像上面的bash行没有输出一样。
如果您想使用docker-compose.yml中定义的选项,那么您应该使用docker run
而不是docker-compose up
命令。
根据您更改的问题,错误:
python3: can't open file '/code/backendworkproj/manage.py runserver 0.0.0.0:8000': [Errno 2] No such file or directory
告诉你python正在寻找文件名:/code/backendworkproj/manage.py runserver 0.0.0.0:8000
而不是/code/backendworkproj/manage.py
。使用json格式时,需要在命令行上分隔参数。所以替换:
CMD [ "python3", "/code/backendworkproj/manage.py runserver 0.0.0.0:8000" ]
使用:
CMD ["python3", "/code/backendworkproj/manage.py"," runserver", "0.0.0.0:8000"]