需要创建bash脚本:
-自动安装docker -获取3张docker图片(Apach、Nginx、MariaDB) -创建需要创建bash脚本:,bash,docker,centos,docker-compose,Bash,Docker,Centos,Docker Compose,-自动安装docker -获取3张docker图片(Apach、Nginx、MariaDB) -创建docker compose.yml文件并对其进行配置 -服务应该工作:Apache:port8080nginx:port80mariadb:port4000 #!bin/bash sudo yum -y update sudo tee >/etc/yum.repos.d/docker.repo <<-EOF [dockerrepo] name=Docker Repository
docker compose.yml
文件并对其进行配置
-服务应该工作:Apache:port8080nginx:port80mariadb:port4000
#!bin/bash
sudo yum -y update
sudo tee >/etc/yum.repos.d/docker.repo <<-EOF
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
sudo yum search docker-engine
sudo yum install -y docker-engine
sudo systemctl enable docker.service && systemctl start docker.service
sudo yum -y install epel-release
sudo yum -y install python-pip
sudo pip install docker-compose
sudo tee >/home/ash/docker_project/Dockerfile <<-EOF
FROM httpd:2.4
COPY ./public-html/ /usr/local/apache2/htdocs
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
EOF
cd /home/ash/docker_project
sudo tee >/home/ash/docker_project/docker-compose.yml <<-EOF
version: '3'
services:
apache:
image: httpd:2.4
ports:
- "8080:8080"
volumes:
- ./src:/usr/local/apache2/htdocs
web:
image: nginx
volumes:
- ./mysite.template:/etc/nginx/conf.d/mysite.template
ports:
- "80:80"
command: /bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d && nginx -g 'daemon off;'"
db:
image: mariadb
ports:
- "4000:4000"
EOF
docker-compose up -d
另外,当我运行docker images
时,我会看到以下列表:
REPOSITORY TAG IMAGE ID CREATED
bitnami/apache latest 569eec9f6f5c 4 days ago
mariadb latest 4828ff028cad 8 days ago
nginx latest ae513a47849c 4 weeks ago
httpd 2.4 fb2f3851a971 4 weeks ago
httpd
docker apache映像公开端口80,而不是8080,请参阅或。只需在docker compose中更改带有apache端口的行:
image: httpd:2.4
ports:
- "8080:8080"
致:
apache应该可以工作了
@编辑:
对于mariadb容器,它公开端口3306
至于nginx,您在web服务中docker compose的命令行中有bash错误。bash命令:
envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d
envsubst/etc/nginx/conf.d
将导致bash错误,因为/etc/nginx/conf.d是一个目录。也许你是指smth,比如:
envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/mysite.conf
envsubst/etc/nginx/conf.d/mysite.conf
您启动apache了吗?好吧,mariadb公开了端口3306,而不是4000。这就剩下了nginx,您可以在这里上传自定义配置。检查nginx是否已使用docker compose logs启动。关于nginx logs有以下输出:“web_1 |/bin/bash:/etc/nginx/conf.d:是一个目录编辑了答案;)
envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d
envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/mysite.conf