带有 LAMP 运行 (Ubuntu) 的 Dockerfile
Dockerfile with LAMP running (Ubuntu)
我正在尝试使用以下
创建 Docker (LAMP) 图像
Docker文件:
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
开始-script.sh:
#!/bin/bash
service mysql start
a2enmod rewrite
service apache2 start
我构建它:
docker build -t resting/ubuntu .
然后 运行 它与:
docker run -it -p 8000:80 -p 5000:3306 -v $(pwd)/html:/var/www/html resting/ubuntu bash
问题是,MYSQL
和 Apache2
服务没有启动。
如果我在容器中手动 运行 /root/start-script.sh
,端口 80 可以很好地映射到端口 8000,但我无法使用 127.0.0.1:5000
.
连接到 MYSQL
当我使用图像启动容器并将 MYSQL 映射到我的主机时,如何确保服务 运行ning?
您需要多张图片 - 每个服务或应用一张。
Docker 容器不是您在其中 运行 整个堆栈的虚拟机。它是一个虚拟应用程序,运行宁一个主要进程。
如果您需要 php、apache 和 mysql,那么您将需要 3 个 docker 容器。一个用于您的 php 应用程序,一个用于 apache,一个用于 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
尽管这可行,但这不是管理容器的正确方法。您应该有一个容器用于 Apache2
,另一个容器用于 MySQL
。
查看这篇使用 Docker-Compose 构建 LAMP 堆栈的文章:https://www.kinamo.be/en/support/faq/setting-up-a-development-environment-with-docker-compose
我正在尝试使用以下
创建 Docker (LAMP) 图像Docker文件:
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
开始-script.sh:
#!/bin/bash
service mysql start
a2enmod rewrite
service apache2 start
我构建它:
docker build -t resting/ubuntu .
然后 运行 它与:
docker run -it -p 8000:80 -p 5000:3306 -v $(pwd)/html:/var/www/html resting/ubuntu bash
问题是,MYSQL
和 Apache2
服务没有启动。
如果我在容器中手动 运行 /root/start-script.sh
,端口 80 可以很好地映射到端口 8000,但我无法使用 127.0.0.1:5000
.
MYSQL
当我使用图像启动容器并将 MYSQL 映射到我的主机时,如何确保服务 运行ning?
您需要多张图片 - 每个服务或应用一张。
Docker 容器不是您在其中 运行 整个堆栈的虚拟机。它是一个虚拟应用程序,运行宁一个主要进程。
如果您需要 php、apache 和 mysql,那么您将需要 3 个 docker 容器。一个用于您的 php 应用程序,一个用于 apache,一个用于 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
尽管这可行,但这不是管理容器的正确方法。您应该有一个容器用于 Apache2
,另一个容器用于 MySQL
。
查看这篇使用 Docker-Compose 构建 LAMP 堆栈的文章:https://www.kinamo.be/en/support/faq/setting-up-a-development-environment-with-docker-compose