I’m following a guide on youtube on how to set up Wireguard in docker compose so I can access my server outside my home network. When I start the container, it’s supposed to create a config directory but when I ls, theres no config directory. Can somebody help me out? Here’s the docker-compose.yml.
version: "2.1" services: wireguard: image: linuxserver/wireguard container_name: wireguard cap_add: - NET_ADMIN environment: - PUID=1000 - PGID=1000 - TZ=Asia/Singapore - SERVERURL=auto #optional - SERVERPORT=51820 #optional - PEERS=1 #optional - PEERDNS=auto #optional - INTERNAL_SUBNET=10.13.13.0 #optional volumes: - /opt/wireguard-server/config:/config - /lib/modules:/lib/modules ports: - 51820:51820/udp sysctls: - net.ipv4.conf.all.src_valid_mark=1 restart: unless-stopped
Your files are now being placed in /opt/wireguard-server/config, not in the folder you have the docker-compose file, can you see them there with ls?
If you want thee files to be created in the directory where your compose file is you should change the path in the volume like so (notice the ./ on the left side of the colon):
- ./config:/config
Volume paths are specified with local-path:container-path, so changing the part before the colon specifies where your files are, and changing the part after the colon specifies where the container sees the files
Hope this makes sense, but I just woke up, so it might not
It worked! I’m new to the self-hosting business so thanks for helping me out.
I’m not a docker pro, so I may be wrong…
It looks to me like your syntax is formatted as if you’re assigning an external bind mount, not a volume.
IIRC, volume mounts are
<name>:<path_inside_container>
, and docker will automatically pre-pend the service name to the vol name (e. g./opt/docker/volumes/wireguard-<name>
)So, you could try something like:
volumes: - wireguard-server-config:/config - wireguard-modules:/lib/modules
ref: https://docs.docker.com/engine/storage/volumes/#use-a-volume-with-docker-compose