
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Docker-LAMP is a set of docker images that include the phusion baseimage (14.04, 16.04 and 18.04 varieties), along with a LAMP stack (http://www.apache.org/, https://www.mysql.com/ and http://php.net/) all in one handy package.
With Ubuntu 18.04 amd 16.04 images on the latest-1804 and latest-1604 tags, Docker-LAMP is flexible enough to use with all of your LAMP projects.
https://circleci.com/gh/mattrayner/docker-lamp https://hub.docker.com/r/mattrayner/lamp
.bash_profile alias examples
docker-compose -f docker-compose.test.yml -p ci build;docker-compose -f docker-compose.test.yml -p ci up -d;docker logs -f ci_sut_1;echo "Exited with status code: $(docker wait ci_sut_1)"As a developer, part of my day to day role is to build LAMP applications. I searched in vein for an image that had everything I wanted, up-to-date packages, a simple interface, good documentation and active support.
To complicate things even further I needed an image, or actually two, that would run my applications on both 14.04 and 16.04. Having two entirely separate workflows didn't make any sense to me, and Docker-LAMP was born.
Designed to be a single interface that just 'gets out of your way', and works on 14.04 and 16.04 with php 5 and 7. You can move between all 4 images without changing how you work with Docker.
NOTE: http://php.net/supported-versions.php, so the PHP 5 images
mattrayner/lamp:latest-1404-php5andmattrayner/lamp:latest-1604-php5will not receive any updates. Although these images will stay on Docker Hub, we strongly recommend updating you applications to PHP7.
NOTE: The 14.04 variant of this image is no longer being actively supported for updated
There are 4 main 'versions' of the docker image. The table below shows the different tags you can use, along with the PHP, MySQL and Apache versions that come with it.
| Component | latest-1404 | latest-1604 | latest-1804 |
|---|---|---|---|
| http://www.apache.org/ | 2.4.7 | 2.4.18 | 2.4.29 |
| https://www.mysql.com/ | 5.5.62 | 5.7.26 | 5.7.26 |
| http://php.net/ | 7.3.3 | 7.3.6 | 7.3.6 |
| https://www.phpmyadmin.net/ | 4.8.5 | 4.9.0.1 | 4.9.0.1 |
This is the quickest way
bash# Launch a 18.04 based image docker run -p "80:80" -v ${PWD}/app:/app mattrayner/lamp:latest-1804 # Launch a 16.04 based image docker run -p "80:80" -v ${PWD}/app:/app mattrayner/lamp:latest-1604 # Launch a 14.04 based image docker run -p "80:80" -v ${PWD}/app:/app mattrayner/lamp:latest-1404
dockerFROM mattrayner/lamp:latest-1804 # Your custom commands CMD ["/run.sh"]
By default, the image comes with a root MySQL account that has no password. This account is only available locally, i.e. within your application. It is not available from outside your docker image or through phpMyAdmin.
When you first run the image you'll see a message showing your admin user's password. This user can be used locally and externally, either by connecting to your MySQL port (default 3306) and using a tool like MySQL Workbench or Sequel Pro, or through phpMyAdmin.
If you need this login later, you can run docker logs CONTAINER_ID and you should see it at the top of the log.
Creating a database
So your application needs a database - you have two options...
PHPMyAdmin
Docker-LAMP comes pre-installed with phpMyAdmin available from http://DOCKER_ADDRESS/phpmyadmin.
NOTE: you cannot use the root user with PHPMyAdmin. We recommend logging in with the admin user mentioned in the introduction to this section.
Command Line
First, get the ID of your running container with docker ps, then run the below command replacing CONTAINER_ID and DATABASE_NAME with your required values:
bashdocker exec CONTAINER_ID mysql -uroot -e "create database DATABASE_NAME"
The 'easiest' way to add your own content to the lamp image is using Docker volumes. This will effectively 'sync' a particular folder on your machine with that on the docker container.
The below examples assume the following project layout and that you are running the commands from the 'project root'.
/ (project root) /app/ (your PHP files live here) /mysql/ (docker will create this and store your MySQL data here)
In english, your project should contain a folder called app containing all of your app's code. That's pretty much it.
The below command will run the docker image mattrayner/lamp:latest interactively, exposing port 80 on the host machine with port 80 on the docker container. It will then create a volume linking the app/ directory within your project to the /app directory on the container. This is where Apache is expecting your PHP to live.
bashdocker run -i -t -p "80:80" -v ${PWD}/app:/app mattrayner/lamp:latest
The below command will run the docker image mattrayner/lamp:latest, creating a mysql/ folder within your project. This folder will be linked to /var/lib/mysql where all of the MySQL files from container lives. You will now be able to stop/start the container and keep your database changes.
You may also add -p 3306:3306 after -p 80:80 to expose the mysql sockets on your host machine. This will allow you to connect an external application such as SequelPro or MySQL Workbench.
bashdocker run -i -t -p "80:80" -v ${PWD}/mysql:/var/lib/mysql mattrayner/lamp:latest
The below command is our 'recommended' solution. It both adds your own PHP and persists database files. We have created a more advanced alias in our .bash_profile files to enable the short commands ldi and launchdocker. See the next section for an example.
bashdocker run -i -t -p "80:80" -v ${PWD}/app:/app -v ${PWD}/mysql:/var/lib/mysql mattrayner/lamp:latest
.bash_profile alias examples
The below example can be added to your ~/.bash_profile file to add the alias commands ldi and launchdocker. By default it will launch the 16.04 image - if you need the 14.04 image, simply change the docker run command to use mattrayner/lamp:latest-1404 instead of mattrayner/lamp:latest.
bash# A helper function to launch docker container using mattrayner/lamp with overrideable parameters # # $1 - Apache Port (optional) # $2 - MySQL Port (optional - no value will cause MySQL not to be mapped) function launchdockerwithparams { APACHE_PORT=80 MYSQL_PORT_COMMAND="" if ! [[ -z "$1" ]]; then APACHE_PORT=$1 fi if ! [[ -z "$2" ]]; then MYSQL_PORT_COMMAND="-p \"$2:3306\"" fi docker run -i -t -p "$APACHE_PORT:80" $MYSQL_PORT_COMMAND -v ${PWD}/app:/app -v ${PWD}/mysql:/var/lib/mysql mattrayner/lamp:latest } alias launchdocker='launchdockerwithparams $1 $2' alias ldi='launchdockerwithparams $1 $2'
Example usage
bash# Launch docker and map port 80 for apache ldi # Launch docker and map port 8080 for apache ldi 8080 # Launch docker and map port 3000 for apache along with 3306 for MySQL ldi 3000 3306
bash# Clone the project from Github git clone https://github.com/mattrayner/docker-lamp.git cd docker-lamp # Build the 18.04, 16.04 image and the 14.04 images docker build -t=mattrayner/lamp:latest -f ./1804/Dockerfile-php7 . docker build -t=mattrayner/lamp:latest-1604 -f ./1604/Dockerfile-php7 . docker build -t=mattrayner/lamp:latest-1404 -f ./1404/Dockerfile-php7 . # Run the 14.04 image as a container docker run -p "3000:80" mattrayner/lamp:latest-1404 -d # Sleep to allow the container to boot sleep 5 # Curl out the contents of our new container curl "http://$(docker-machine ip):3000/"
We use docker-compose to setup, build and run our testing environment. It allows us to offload a large amount of the testing overhead to Docker, and to ensure that we always test our image in a consistent way thats not affected by the host machine.
We've developed a single-line test command you can run on your machine within the docker-lamp directory. This will test any changes that may have been made, as well as comparing installed versions of Apache, MySQL, PHP and phpMyAdmin against those expected.
bashdocker-compose -f docker-compose.test.yml -p ci build; docker-compose -f docker-compose.test.yml -p ci up -d; docker logs -f ci_sut_1; echo "Exited with status code: $(docker wait ci_sut_1)";
So what does this command do?
docker-compose -f docker-compose.test.yml -p ci build;
First, build that latest version of our docker-compose images.
docker-compose -f docker-compose.test.yml -p ci up -d;
Launch our docker containers (web1804, web1604, web1404 and sut or system under tests) in daemon mode.
docker logs -f ci_sut_1;
Display all of the logging output from the sut container (extremely useful for debugging)
echo "Exited with status code: $(docker wait ci_sut_1)"
Report back the status code that the sut container ended with.
This image was originally based on https://github.com/dgraziotin/osx-docker-lamp, with a few changes to make it compatible with the Concrete5 CMS.
I also changed the setup to create ubuntu (well, baseimage, but you get what I'm saying) images so that this project could be as useful as possible to as many people as possible.
If you wish to submit a bug fix or feature, you can create a pull request and it will be merged pending a code review.
Docker-LAMP is licensed under the Apache 2.0 License.
以下是 mattrayner/lamp 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务