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左右,然后再试一次。