我正在尝试使用以下内容创建 Docker (LAMP) 映像
Dockerfile:
FROM ubuntu:latest
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
apache2 \
mysql-server \
php7.0 \
php7.0-bcmath \
php7.0-mcrypt
COPY start-script.sh /root/
RUN chmod +x /root/start-script.sh && /root/start-script.sh
Run Code Online (Sandbox Code Playgroud)
启动脚本.sh:
#!/bin/bash
service mysql start
a2enmod rewrite
service apache2 start
Run Code Online (Sandbox Code Playgroud)
我用以下方法构建它:
docker build -t resting/ubuntu .
Run Code Online (Sandbox Code Playgroud)
然后运行它:
docker run -it -p 8000:80 -p 5000:3306 -v $(pwd)/html:/var/www/html resting/ubuntu bash
Run Code Online (Sandbox Code Playgroud)
问题是,MYSQL
和Apache2
服务没有启动。
如果我/root/start-script.sh
在容器中手动运行,端口 80 可以很好地映射到端口 8000,但我无法MYSQL
使用127.0.0.1:5000
.
当我使用映像启动容器并将 MYSQL 映射到我的主机时,如何确保服务正在运行?
您需要将脚本的执行更改为CMD
指令。
FROM ubuntu:latest
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
apache2 \
mysql-server \
php7.0 \
php7.0-bcmath \
php7.0-mcrypt
COPY start-script.sh /root/
RUN chmod +x /root/start-script.sh
CMD /root/start-script.sh
Run Code Online (Sandbox Code Playgroud)
虽然这可行,但这不是管理容器的正确方法。您应该有一个容器用于存放您的物品Apache2
,另一个容器用于存放MySQL
.
查看这篇使用 Docker-Compose 构建 LAMP 堆栈的文章:https://www.kinamo.be/en/support/faq/setting-up-a-development-environment-with-docker-compose
归档时间: |
|
查看次数: |
7969 次 |
最近记录: |