DEV Community

Janak Shrestha
Janak Shrestha

Posted on

Write a Docker Compose File

The Nautilus application development team shared static website content that needs to be hosted on the httpd web server using a containerised platform. The team has shared details with the DevOps team, and we need to set up an environment according to those guidelines. Below are the details:

a. On App Server 3 in Stratos DC create a container named httpd using a docker compose file /opt/docker/docker-compose.yml (please use the exact name for file).

b. Use httpd (preferably latest tag) image for container and make sure container is named as httpd; you can use any name for service.

c. Map 80 number port of container with port 6000 of docker host.

d. Map container's /usr/local/apache2/htdocs volume with /opt/itadmin volume of docker host which is already there. (please do not modify any data within these locations).


Connect to App Server 3

ssh banner@stapp03
sudo -i
Enter fullscreen mode Exit fullscreen mode

Password for banner: BigGr33n


Create the Docker Directory

mkdir -p /opt/docker
Enter fullscreen mode Exit fullscreen mode

Verify the Host Volume Exists

ls -la /opt/itadmin
Enter fullscreen mode Exit fullscreen mode

Output:

total 16
drwxr-xr-x 2 root root 4096 Oct 27 11:34 .
drwxr-xr-x 1 root root 4096 Oct 27 11:34 ..
-rw-r--r-- 1 root root   34 Oct 27 11:34 index1.html
Enter fullscreen mode Exit fullscreen mode

The host directory /opt/itadmin exists and contains the static website content (index1.html).


Create the Docker Compose File

vi /opt/docker/docker-compose.yml
Enter fullscreen mode Exit fullscreen mode

Add the following content:

version: '3.8'

services:
  httpd:
    image: httpd:latest
    container_name: httpd
    ports:
      - "6000:80"
    volumes:
      - /opt/itadmin:/usr/local/apache2/htdocs
Enter fullscreen mode Exit fullscreen mode

Verify the file:

cat /opt/docker/docker-compose.yml
Enter fullscreen mode Exit fullscreen mode

Output:

version: '3.8'

services:
  httpd:
    image: httpd:latest
    container_name: httpd
    ports:
      - "6000:80"
    volumes:
      - /opt/itadmin:/usr/local/apache2/htdocs
Enter fullscreen mode Exit fullscreen mode

Start the Container Using Docker Compose

cd /opt/docker
docker compose up -d
Enter fullscreen mode Exit fullscreen mode

Output:

WARN[0000] /opt/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 
[+] up 9/9
 ✔ Image httpd:latest     Pulled                                                                4.9s
 ✔ Network docker_default Created                                                               0.1s
 ✔ Container httpd        Created                                                               0.1s
Enter fullscreen mode Exit fullscreen mode

The warning about the version attribute is informational only; it does not affect functionality.


Verify the Container is Running

docker ps | grep httpd
Enter fullscreen mode Exit fullscreen mode

Output:

c1795d69f717   httpd:latest   "httpd-foreground"   5 seconds ago   Up 4 seconds   0.0.0.0:6000->80/tcp, :::6000->80/tcp   httpd
Enter fullscreen mode Exit fullscreen mode

The container httpd is running and port 6000 is mapped to container port 80.


Verify the Port Mapping

docker port httpd
Enter fullscreen mode Exit fullscreen mode

Output:

80/tcp -> 0.0.0.0:6000
80/tcp -> [::]:6000
Enter fullscreen mode Exit fullscreen mode

Verify the Volume Mapping

docker inspect httpd --format='{{range .Mounts}}{{.Source}} -> {{.Destination}}{{end}}'
Enter fullscreen mode Exit fullscreen mode

Output:

/opt/itadmin -> /usr/local/apache2/htdocs
Enter fullscreen mode Exit fullscreen mode

The host /opt/itadmin is correctly mapped to the container document root.


Test the Website

curl -I http://localhost:6000/
Enter fullscreen mode Exit fullscreen mode

Output:

HTTP/1.1 200 OK
Date: Tue, 27 Oct 2026 11:37:44 GMT
Server: Apache/2.4.69 (Unix)
Content-Type: text/html;charset=ISO-8859-1
Enter fullscreen mode Exit fullscreen mode

The HTTP 200 OK response confirms the web server is accessible on host port 6000.


Complete Command Sequence

ssh banner@stapp03
sudo -i

mkdir -p /opt/docker

cat > /opt/docker/docker-compose.yml << 'EOF'
version: '3.8'

services:
  httpd:
    image: httpd:latest
    container_name: httpd
    ports:
      - "6000:80"
    volumes:
      - /opt/itadmin:/usr/local/apache2/htdocs
EOF

cat /opt/docker/docker-compose.yml

cd /opt/docker
docker compose up -d

docker ps | grep httpd
docker port httpd
docker inspect httpd --format='{{range .Mounts}}{{.Source}} -> {{.Destination}}{{end}}'
curl -I http://localhost:6000/
Enter fullscreen mode Exit fullscreen mode

Top comments (0)