как мне быть, если я хочу билдить свой проект с помощью докерхаб
db:
image: mysql:5.7.22
<...>
volumes:
- ./dbdata:/var/lib/mysql
- ./backend/mysql/my.cnf:/etc/mysql/my.cnf
я не могу достучаться до сервера по локалхосту
mysql uses an image, skipping
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
docker-compose up -d
environment:
VIRTUAL_HOST: b.localhost
cod
, т.е. имя сервиса в docker-compose файле. 127.0.0.1 b.localhost
docker run my-container
docker run --restart=always my-container
docker exec some_name touch /dockerdir/test
ls /media/mount_dir/
touch /media/mount_dir/test222
docker exec some_name ls /dockerdir
ssh user@172.17.0.1 docker-compose exec nginx service nginx restart
- ./nginx/default:/etc/nginx/sites-available/default
- ./nginx/default:/etc/nginx/sites-enabled/default
- ./nginx/sites-available:/etc/nginx/sites-available
- ./nginx/sites-enabled:/etc/nginx/sites-enabled
.
├── docker-compose.yml
└── volumes
├── gitlab
│ ├── config
│ │ ├── ...
│ ├── data
│ │ ├── ...
│ └── logs
│ └── ...
└── nginx
├── conf.d
│ └── gitlab.domain.com.conf
├── dhparam.pem
├── logs
├── nginx.conf
└── www
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab'
container_name: gitlab
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://{{ domain_name }}'
nginx['enable'] = false
web_server['external_users'] = ['www-data']
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "0.0.0.0:8181"
gitlab_rails['trusted_proxies'] = [ '172.17.0.1/16' ]
gitlab_rails['gitlab_shell_ssh_port'] = 22
gitlab_rails['time_zone'] = 'Asia/Tomsk'
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main:
label: 'LDAP'
host: '{{ ldap_server }}'
port: 389
uid: 'sAMAccountName'
bind_dn: 'CN={{ cn }},OU={{ ou }},DC={{ dc }},DC=com'
password: '{{ pass }}'
encryption: 'plain'
active_directory: true
allow_username_or_email_login: false
lowercase_usernames: false
block_auto_created_users: false
base: 'OU={{ ou }},DC={{ dc }},DC=com'
user_filter: '(&(objectCategory=Person)(sAMAccountName=*))'
EOS
gitlab_rails['backup_upload_connection'] = {
:provider => 'Local',
:local_root => '/mnt'
}
gitlab_rails['backup_upload_remote_directory'] = 'backup'
gitlab_rails['backup_keep_time'] = 864000
ports:
- '22:22'
volumes:
- ./volumes/gitlab/config:/etc/gitlab
- ./volumes/gitlab/logs:/var/log/gitlab
- ./volumes/gitlab/data:/var/opt/gitlab
- /mnt/backup:/mnt/backup
nginx:
container_name: nginx
image: nginx:1.15.0-alpine
restart: always
links:
- gitlab:gitlab
ports:
- 80:80
- 443:443
volumes:
- /etc/letsencrypt/:/etc/letsencrypt
- ./volumes/nginx/logs:/var/log/nginx
- ./volumes/nginx/conf.d:/etc/nginx/conf.d
- ./volumes/nginx/www:/var/www
- ./volumes/nginx/dhparam.pem:/etc/nginx/dhparam.pem
- ./volumes/nginx/nginx.conf:/etc/nginx/nginx.conf
{{ xx }}
- это переменные, просто замените на свои значения. gitlab_workhorse['listen_addr']
- это адрес и порт, которые будет слушать гитлаб, можно оставить как есть. Порт 22 редиректится из системы в гитлаб контейнер, поэтому системный SSH демон я повесил на другой порт.upstream gitlab-endpoint {
server gitlab:8181 fail_timeout=0;
}
server {
listen 80;
server_name gitlab.domain.com;
location /.well-known {
root /var/www/;
}
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl http2;
server_name gitlab.domain.com;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_certificate /etc/letsencrypt/live/gitlab.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gitlab.domain.com/privkey.pem;
location / {
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://gitlab-endpoint;
}
location /.well-known {
root /var/www/;
}
}
root@gitlab:/docker# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------
gitlab /assets/wrapper Up 0.0.0.0:22->22/tcp, 443/tcp, 80/tcp
nginx nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
CMD ping 127.0.0.1
и затем проверьте запущен ли контейнер docker-compose ps
CMD ["nginx", "-g", "daemon off;"]
docker exec -it NAME bash
, где NAME - имя контейнера из docker-compose ps. FROM ubuntu:16.04
RUN apt update && apt install fortunes cowsay -y
CMD ["/usr/games/fortune", "-e"]
-e
, потому как не знаю как пайп запихать в CMD.CMD ["/bin/bash", "-c", "/usr/games/fortune -a | /usr/games/cowsay"]
server_name example.com www.example.com;
apt-get install docker.io
services:
service-name:
container_name: service-name
build: images/service-name
network_mode: host
server_name site.query.ru;
на
proxy_pass http://site;
networks:
mynetwork:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.10.10.0/24
ip_range: 10.10.0.0/24
gateway: 10.10.10.1
services:
# Контейнер с проксирующим nginx
nginx:
container_name: nginx
build: images/nginx
networks:
- mynetwork
# Контейнер с сайтом
site:
container_name: site
build: images/site
networks:
- mynetwork