Linode /灯+docker – 组成

我想在本地安装linode / lamp容器来处理一些wordpress项目,而不会让我的机器与所有的灯具依赖关系混淆。

我遵循这个教程 ,它工作得很好(它实际上是超级简单的)。

现在我想使用docker-compose因为我觉得只需键入docker-compose up并且很好走就更方便了。

这里我做了什么:

Dockerfile:

 FROM linode/lamp RUN service apache2 start RUN service mysql start 

泊坞窗,compose.yml:

 web: build: . ports: - "80:80" volumes: - .:/var/www/example.com/public_html/ 

当我做docker-compose up ,我得到:

 ▶ docker-compose up Recreating gitewordpress_web_1... Attaching to gitewordpress_web_1 gitewordpress_web_1 exited with code 0 Gracefully stopping... (press Ctrl+C again to force) 

我猜我需要在我docker-compose.yml命令参数,但我不知道我应该设置。

任何想法我做错了什么?

您不能在Dockerfile中启动这两个进程。 Dockerfile决定了在构build图像时要运行的命令。

事实上,像Debian这样的许多基本的图像是专门devise的,不允许在构build期间启动任何服务。

你可以做的是在包含你的Dockerfile的文件夹中创build一个名为run.sh的文件。 把这个放在里面:

 #!/usr/bin/env bash service apache2 start service mysql start tail -f /dev/null 

这个脚本只是启动这两个服务,并强制控制台保持打开状态。 你需要把它放在你的容器中,这是通过Dockerfile中的两行来完成的。 总的来说,我会使用这个Dockerfile:

 FROM linode/lamp COPY run.sh /run.sh RUN chmod +x /run.sh CMD ["/bin/bash", "-lc", "/run.sh"] 

这确保文件在启动容器时正常运行,以便它保持运行,并确保这些服务真正开始。

你还应该注意的是,你的端口80实际上是在你的主机上。 如果你有任何绑定它,这个composer php文件将无法正常工作。 如果这是你的情况(或者你不确定)尝试改变港口线喜欢81:80左右,然后再试一次。