需要创建bash脚本:

需要创建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

-获取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
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