Background
As an exercise I had run WordPress via a Docker Compose file locally and then within Azure (I would not recommend this for “production” systems, this was merely an intellectual exercise and I based my ideas on this article amongst other.
Running containers within Azure is a little confusing for the beginner as, typical for Microsoft, there are many ways to do the same thing and I noted that it is possible to run multiple containers with a YAML file as opposed to a Docker Compose file.
So I created a YAML file which mirrored my Compose file and tried to run it
az container create --resource-group mygroup --dns-name-label myyaml --file deploy-wp.yaml
With a YAML file:
apiVersion: 2021-09-01
location: uksouth
name: wordpress-group
type: Microsoft.ContainerInstance/containerGroups
properties:
containers:
- name: wordpress
properties:
image: wordpress:6.4
resources:
requests:
cpu: 1
memoryInGb: 1.5
ports:
- port: 80
environmentVariables:
- name: WORDPRESS_DB_HOST
value: db
- name: WORDPRESS_DB_USER
value: wordpressuser
- name: WORDPRESS_DB_PASSWORD
value: wordpresspass
- name: WORDPRESS_DB_NAME
value: wordpressdb
- name: mysql
properties:
image: mysql:8.0.27
resources:
requests:
cpu: 1
memoryInGb: 1.5
ports:
- port: 3306
- port: 33060
environmentVariables:
- name: MYSQL_ROOT_PASSWORD
value: rootpass
- name: MYSQL_DATABASE
value: wordpressdb
- name: MYSQL_USER
value: wordpressuser
- name: MYSQL_PASSWORD
value: wordpresspass
osType: Linux
ipAddress:
type: Public
dnsNameLabel: testwordpress
ports:
- protocol: tcp
port: 80
- protocol: tcp
port: 3306
- protocol: tcp
port: 33060
The containers started and I could read the logs via
az container logs –resource-group mygroup –name wordpress-group –container-name wordpress
az container logs –resource-group mygroup –name wordpress-group –container-name mysql
I could also get the FQDN of wordpress via
az container show --resource-group mygroup --name wordpress-group --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" --out table
The Problem
I then browsed to the port 80 endpoint for the WordPress container (URL obtained from the Azure portal) and….Error….wordpress could not connect to the database
The Solution
After much head scratching and searching I found an article that suggested using 127.0.0.1 for the “db name” in the yaml file
- name: WORDPRESS_DB_HOST
value: 127.0.0.1:3306