I am setting up a new server for our Redmine installation using Docker. I am having trouble starting the Docker container due to an error message. The host is running behind a proxy server, which I think is causing this problem, as everything else, such as wget, curl, etc., is working fine.
Error message:
Pulling redmine (redmine:)...
ERROR: Get https://registry-1.docker.io/v2/: dial tcp 34.206.236.31:443: connect: connection refused
I searched on Google about using Docker/Docker-Compose with a proxy server in the background and found a few websites where people had the same issue, but none of these really helped me with my problem.
I checked with the Docker documentation and found a guide, but this does not seem to work for me: https://docs.docker.com/network/proxy/
I also found an answered question here on StackOverflow: Using proxy on docker-compose in server, which might be the solution I am after, but I am unsure where exactly I have to put the solution. I guess the person means the docker-compose.yml file, but I could be wrong.
This is what my docker-compose.yml looks like:
version: '3.1'
services:
redmine:
image: redmine
restart: always
ports:
- 80:3000
environment:
REDMINE_DB_MYSQL: db
REDMINE_DB_PASSWORD: SECRET_PASSWORD
db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: SECRET_PASSWORD
MYSQL_DATABASE: redmine
I expect to run the following command without the above error message
docker-compose -f docker-compose.yml up -d
I did a bit more research and seem to have used better key words because I have found my solution now. I wanted to share the solution with everyone, in case someone else may ever need it.
Create a folder to configure the Docker service through systemd:
mkdir /etc/systemd/system/docker.service.d
Create a service configuration file at /etc/systemd/system/docker.service.d/http-proxy.conf
and put the following in the newly created file
[Service]
# NO_PROXY is optional and can be removed if not needed
# Change proxy_url to your proxy IP or FQDN and proxy_port to your proxy port
# For Proxy servers that require username and password authentication, just add the proper username and password to the URL. (see example below)
# Example without authentication
Environment="HTTP_PROXY=http://proxy_url:proxy_port/" "NO_PROXY=localhost,127.0.0.0/8"
# Example with authentication
Environment="HTTP_PROXY=http://username:password@proxy_url:proxy_port/" "NO_PROXY=localhost,127.0.0.0/8"
# Example for SOCKS5
Environment="HTTP_PROXY=socks5://proxy_url:proxy_port/" "NO_PROXY=localhost,127.0.0.0/8"
Reload systemctl to read the new settings:
sudo systemctl daemon-reload
Verify that the Docker service environment is properly set:
sudo systemctl show docker --property Environment
Restart the Docker service to use the updated environment settings
sudo systemctl restart docker
Now you can execute the docker-compose
command on your machine without getting any connection refused
error messages.