/appRUN keyword to run commands in the base image-y to ensure everything is automatedsudoCOPY to copy local files into your image COPY <local_src> <image_dest>go.mod and go.sum)go run . you'll need to learn how to compile and run separately)docker build -t my-image .docker run -p 8080:8080 my-mage-p 8080:8080 will map local port 8080 to container port 8080localhost [in your code]0.0.0.0 as the host insteadnet packagedocker compose up --build --force-recreate --renew-anon-volumesdocker build and docker runcompose.yaml, compose.yml, or docker-compose.ymlcompose.yaml file uses the YAML format
<key>:<value>-services:
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: '7PtypF^*6&to@PAhwaw5'
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
app:
build: .
environment:
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
ports:
- "8080:8080"mysqlappservices:
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: '7PtypF^*6&to@PAhwaw5'
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
app:
build: .
environment:
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
ports:
- "8080:8080"image to specify an image to use
FROM mysqlbuild to specify a local Dockerfile
. to specify the current directoryservices:
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: '7PtypF^*6&to@PAhwaw5'
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
app:
build: .
environment:
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
ports:
- "8080:8080"-p 8080:8080 when running a single containerservices:
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: '7PtypF^*6&to@PAhwaw5'
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
app:
build: .
environment:
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
ports:
- "8080:8080"environment to set any needed environment variablesservices:
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: '7PtypF^*6&to@PAhwaw5'
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
app:
build: .
environment:
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
ports:
- "8080:8080".env file and use ${VARIABLE_NAME} to read your variablesservices:
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: '7PtypF^*6&to@PAhwaw5'
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
app:
build: .
environment:
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
ports:
- "8080:8080"services:
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: '7PtypF^*6&to@PAhwaw5'
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
app:
build: .
environment:
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
ports:
- "8080:8080"depends_on with healthcheck (After reading the documentation)ufoscout's solution on GitHubservices:
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: '7PtypF^*6&to@PAhwaw5'
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
app:
build: .
environment:
MYSQL_USER: mysql_username
MYSQL_PASSWORD: 'WTc&$5#jAd6jRe9gJ0nL'
MYSQL_DATABASE: my_db
ports:
- "8080:8080"When communicating across containers, the service name is the container's hostname
Connection string:
postgres://user:pass@HOST:5432/db
Running with go run .
HOST = localhost
Running with docker compose up
HOST = postgres
docker compose updocker compose up --build --force-recreate --renew-anon-volumesdocker compose restart